0918 - SumCifRec1: Difference between revisions
Pagină nouă: == 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 mi... |
No edit summary |
||
Line 7: | Line 7: | ||
* Ordinea celor doi parametri este n, s | * 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 | * Numărul n pentru care se calculează suma cifrelor va fi mai mic decât 2.000.000.000 | ||
== | == Explicație == | ||
Funcția <code>sumcif</code> primește un număr natural <code>n</code> și calculează suma cifrelor sale. Funcția utilizează o abordare recursivă, în care se extrage ultima cifră a lui <code>n</code> prin calculul lui <code>n % 10</code>, iar apoi se adaugă această cifră la suma cifrelor cifrelor numărului <code>n // 10</code> (adică a lui <code>n</code> fără ultima cifră). Acest proces se repetă până când numărul <code>n</code> devine 0. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def validate_n(n): | |||
return isinstance(n, int) and n >= 0 and n <= 2000000000 | |||
def sumcif(n, s): | def sumcif(n, s): | ||
if n == 0: | if n == 0: | ||
Line 17: | Line 20: | ||
else: | else: | ||
return sumcif(n // 10, s + n % 10) | 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> | </syntaxhighlight> |
Revision as of 13:39, 6 April 2023
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>