0918 - SumCifRec1
Cerinţa
Să se scrie o funcție Python recursivă care determină suma cifrelor unui număr natural n transmis ca parametru și întoarce rezultatul prin intermediul unui parametru de ieșire.
Restricţii şi precizări
- Numele funcției va fi sumcif
- Funcția are un doi parametri, n, număr natural, și s, prin intermediul căruia se întoarce rezultatul
- Ordinea celor doi parametri este n, s
- Numărul n pentru care se calculează suma cifrelor va fi mai mic decât 2.000.000.000
Explicație
Funcția sumcif primește un număr natural n și calculează suma cifrelor sale. Funcția utilizează o abordare recursivă, în care se extrage ultima cifră a lui n prin calculul lui n % 10, iar apoi se adaugă această cifră la suma cifrelor cifrelor numărului n // 10 (adică a lui n fără ultima cifră). Acest proces se repetă până când numărul n devine 0.
Rezolvare
<syntaxhighlight lang="python"> def validate_n(n):
return isinstance(n, int) and n >= 0 and n <= 2000000000
def sumcif(n, s):
if n == 0:
return s
else:
return sumcif(n // 10, s + n % 10)
def main():
n = input("Introduceți un număr întreg pozitiv: ")
try:
n = int(n)
if validate_n(n):
result = sumcif(n, 0)
print(f"Suma cifrelor numărului introdus este: {result}")
else:
print("Numărul introdus nu este valid.")
except ValueError:
print("Nu ați introdus un număr întreg.")
</syntaxhighlight>