0823 - SumCifRec
Cerinţa
Să se scrie o funcție Python recursivă care să returneze suma cifrelor unui număr natural transmis ca parametru.
Restricţii şi precizări
- Numele funcției va fi sumcif
- Funcția va avea un parametru reprezentând numărul dat
- Numărul pentru care se calculează suma cifrelor va fi mai mic decât 2.000.000.000
Exemplu
sumcif(2050) este 7.
Explicație
Această funcție calculează suma cifrelor unui număr dat. Funcția primește un singur parametru, numărul întreg n, și returnează suma cifrelor sale.
Pentru a calcula suma cifrelor, funcția verifică dacă n este mai mic decât 10. Dacă este, atunci n este o singură cifră și această cifră este returnată ca rezultat al funcției.
În caz contrar, funcția calculează suma cifrei unităților a lui n (n % 10) și împărțește apoi n la 10 pentru a elimina această cifră. Funcția apelează apoi recursiv funcția sumcif cu n // 10 (adică numărul n fără ultima cifră) și adaugă rezultatul la suma cifrei unităților pentru a obține suma totală a cifrelor.
Rezolvare
<syntaxhighlight lang="python"> def validate_n(n):
if n < 0 or n > 2000000000: return False return True
def sumcif(n):
if n < 10: return n else: return n % 10 + sumcif(n // 10)
def main():
n = input("Introduceți un număr întreg pozitiv: ") try: n = int(n) if validate_n(n): result = sumcif(n) 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>