4207 - SumProdRec: Difference between revisions
Pagină nouă: == Cerința == Scrieți funcția recursivă care primind ca parametru un număr natural nenul n, returnează valoarea sumei <span style="color: red;">1•2 + 2•3 + ... (n-1)•n.</span> == Restricții și precizări == * <span style="color: red;">2 ≤ n ≤ 10.000</span>. * Numele funcției este <span style="color: red;">SumProdRec</span>. * Se recomandă utilizarea recursivității în rezolvarea problemei. == Exemplu == <span style="color: red;">SumProdRec(4) = 20</span>... |
validare + main, explicatii |
||
Line 7: | Line 7: | ||
== Exemplu == | == Exemplu == | ||
<span style="color: red;">SumProdRec(4) = 20</span>. | <span style="color: red;">SumProdRec(4) = 20</span>. | ||
== | == Explicație == | ||
Aceasta este o funcție recursivă numită SumProdRec, care ia un argument n și calculează suma produselor consecutive ale numerelor intre 1 și n-1, folosind recursivitatea. | |||
Pentru cazul de bază, dacă n este 1, funcția returnează 0. În caz contrar, funcția returnează (n-1)*n + SumProdRec(n-1), adică produsul dintre n-1 si n, plus rezultatul funcției SumProdRec apelată cu n-1 ca argument. | |||
== Rezolvare == | == Rezolvare == | ||
=== Varianta 1 === | === Varianta 1 === | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
def validate_n(n): | |||
if isinstance(n, int) and n >= 2 and n <= 10000: | |||
return True | |||
else: | |||
return False | |||
def SumProdRec(n): | def SumProdRec(n): | ||
if n == 1: | if n == 1: | ||
Line 17: | Line 26: | ||
else: | else: | ||
return (n-1)*n + SumProdRec(n-1) | return (n-1)*n + SumProdRec(n-1) | ||
def main(): | |||
n = input("Introduceti un numar intreg intre 2 si 10.000: ") | |||
try: | |||
n = int(n) | |||
if validate_n(n): | |||
result = SumProdRec(n) | |||
print(f"Suma produselor consecutive ale numerelor intre 1 si {n-1} este: {result}") | |||
else: | |||
print("Numarul introdus nu este valid.") | |||
except ValueError: | |||
print("Nu ati introdus un numar intreg.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 11:52, 5 April 2023
Cerința
Scrieți funcția recursivă care primind ca parametru un număr natural nenul n, returnează valoarea sumei 1•2 + 2•3 + ... (n-1)•n.
Restricții și precizări
- 2 ≤ n ≤ 10.000.
- Numele funcției este SumProdRec.
- Se recomandă utilizarea recursivității în rezolvarea problemei.
Exemplu
SumProdRec(4) = 20.
Explicație
Aceasta este o funcție recursivă numită SumProdRec, care ia un argument n și calculează suma produselor consecutive ale numerelor intre 1 și n-1, folosind recursivitatea.
Pentru cazul de bază, dacă n este 1, funcția returnează 0. În caz contrar, funcția returnează (n-1)*n + SumProdRec(n-1), adică produsul dintre n-1 si n, plus rezultatul funcției SumProdRec apelată cu n-1 ca argument.
Rezolvare
Varianta 1
<syntaxhighlight lang="python" line="1"> def validate_n(n):
if isinstance(n, int) and n >= 2 and n <= 10000: return True else: return False
def SumProdRec(n):
if n == 1: return 0 else: return (n-1)*n + SumProdRec(n-1)
def main():
n = input("Introduceti un numar intreg intre 2 si 10.000: ") try: n = int(n) if validate_n(n): result = SumProdRec(n) print(f"Suma produselor consecutive ale numerelor intre 1 si {n-1} este: {result}") else: print("Numarul introdus nu este valid.") except ValueError: print("Nu ati introdus un numar intreg.")
</syntaxhighlight>