Fattoriale – Funzioni

Puoi usare la funzione math.factorial()


Definizione iterativa

n!=\left\{ \begin{array}{ll}1&n=0,1\\ n(n-1)\,\dots\,1 & \text{altrimenti}\end{array} \right

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

n!=left{ begin{array}{ll}1&n=0,1\ n(n-1)! & text{altrimenti}end{array} right

oppure

f(n)=left{ begin{array}{ll}1&n=0,1\ ncdot f(n-1) & text{altrimenti}end{array} right

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, 70! \approx {10}^{100}.

Se è sufficiente un valore approssimato si può utilizzare la formula di Stirling: \displaystyle n!\approx \sqrt{2 \pi n} \left( \frac{n}{e} \right)^{n}

x = math.sqrt(2*math.pi*n)*(n/math.e)**n