Puoi usare la funzione math.factorial()
Definizione iterativa
Per n=5:
5! = 5*4*3*2*1 = 120
Il fattoriale come funzione di n
def fatt(n):
prod=1
for i in range(2, n+1):
prod=i*prod
return prod
n=5
print(n, fatt(n)) # 5 120
def fatt(n):
prod=1
i=2
while(i <= n):
prod=i*prod
i =i+1
return prod
n=5
print(n, fatt(n)) # 5 120
Definizione ricorsiva
oppure
Per N=5
5! = 5*4!
4! = 4*3!
3! = 3*2!
2! = 2*1!
1! = 1
2! = 2*1 = 2
3! = 3*2 = 6
4! = 4*6 = 24
5! = 5*24 = 120
Codifica
def fatt(n):
if(n == 0) or (n == 1):
return 1
else:
return n*fatt(n-1)
Approssimazione
All’aumentare del valore di n il valore del fattoriale diventa astronomico!
Per esempio, .
Se è sufficiente un valore approssimato si può utilizzare la formula di Stirling:
x = math.sqrt(2*math.pi*n)*(n/math.e)**n