0916 - FactorialRec1: Difference between revisions
Pagină nouă: == 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,... |
No edit summary |
||
Line 8: | Line 8: | ||
* Funcția are un doi parametri, n, număr natural, n≤10, și parametrul f, prin intermediul căruia se întoarce rezultatul | * 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 | * Ordinea celor doi parametri este n, f | ||
== | == Explicație == | ||
Această funcție calculează factorialul unui număr dat <code>n</code>. Argumentul suplimentar <code>f</code> 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 <code>n</code> este zero și returnează 1 (deoarece 0! este 1). În caz contrar, funcția își va apela recursiv propria instanță, scăzând <code>n</code> cu 1 și multiplicând <code>f</code> cu <code>n</code> înainte de a se întoarce. În final, valoarea rezultată a lui <code>f</code> va fi returnată. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def validate_n(n): | |||
return isinstance(n, int) and n >= 0 and n <= 10 | |||
def factorial(n, f): | def factorial(n, f): | ||
if n == 0: | if n == 0: | ||
Line 20: | Line 25: | ||
f *= n | f *= n | ||
return f | 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> | </syntaxhighlight> |
Revision as of 10:32, 6 April 2023
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>