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
return prod
n = 5
print(n, fatt(n)) # 5 120
def fatt(n):
prod = 1
i = 2
while(i <= n):
prod *= i
i += 1
return prod
n = 5
print(n, fatt(n)) # 5 120
Definizione ricorsiva
oppure
def fatt(n):
if(n <= 1):
return 1
else:
return n*fatt(n-1)
n = 5
print(n, fatt(n)) # 5 120
Coefficiente binomiale
La funzione fattoriale si utilizza per il calcolo del coefficiente binomiale di n su k…
def coefficente_binomiale(n, k):
f_n = fatt(n)
f_k = fatt(k)
f_n_k = fatt(n-k)
return f_n // (f_k * f_n_k)
Sinteticamente
def coefficente_binomiale(n, k):
return fatt(n) // (fatt(k) * fatt(n-k))
Con la formula più corta
def prodotto(a, b):
prod = 1
for i in range(a, b+1):
prod *= i
return prod
def coefficente_binomiale(n, k):
return prodotto(n, n-k+1) // fatt(k)