0918 - SumCifRec1: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
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...
 
Cata (talk | contribs)
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
== Important ==
== Explicație ==
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
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>