0916 - FactorialRec1
Cerința
Pentru un număr natural dat n, se numește factorialul lui n și se notează n! următoarea expresie: 1*2*3*...*n. Prin definiție, 0!=1.
Să se scrie o funcție Python recursivă care determină factorialul unui număr transmis ca parametru și întoarce rezultatul prin intermediul unui parametru de ieșire.
Restricţii şi precizări
- Numele funcției scrise este factorial
- Funcția are un doi parametri, n, număr natural, n≤10, și parametrul f, prin intermediul căruia se întoarce rezultatul
- Ordinea celor doi parametri este n, f
Explicație
Această funcție calculează factorialul unui număr dat n
. Argumentul suplimentar f
este folosit pentru a reține rezultatul parțial în timpul apelurilor recursive ale funcției.
În esență, funcția începe prin verificarea cazului de bază, unde n
este zero și returnează 1 (deoarece 0! este 1). În caz contrar, funcția își va apela recursiv propria instanță, scăzând n
cu 1 și multiplicând f
cu n
înainte de a se întoarce. În final, valoarea rezultată a lui f
va fi returnată.
Rezolvare
<syntaxhighlight lang="python"> def validate_n(n):
return isinstance(n, int) and n >= 0 and n <= 10
def factorial(n, f):
if n == 0: f = 1 else: factorial(n-1, f) f *= n return f
def main():
n = input("Introduceți un număr întreg pozitiv: ") try: n = int(n) f = 1 if validate_n(n): result = factorial(n, f) print(f"{n}! = {result}") else: print("Numărul introdus nu este valid.") except ValueError: print("Nu ați introdus un număr întreg.")
</syntaxhighlight>