4207 - SumProdRec
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.
Date de intrare
Programul citește de la tastatură un număr cuprins între 2 și 10000.
Date de ieșire
Programul afișează un mesaj de validare a datelor ("Datele introduse sunt corecte."), iar apoi suma cerută ale numerelor între 1 și n-1, n fiind numărul introdus de la tastatură.
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 între 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 și n, plus rezultatul funcției SumProdRec apelată cu n-1 ca argument.
Rezolvare
<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("Datele introduse sunt corecte.") 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.")
if __name__ == "__main__":
main()
</syntaxhighlight>