In questa lezione calcoleremo il fattoriale di un numero in Python utilizzando vari metodi.

Innanzitutto diamo la definizione.

In matematica il fattoriale di un numero naturale n, è il prodotto dei numeri interi positivi minori o uguali a tale numero e si indica con n!

Quindi ad esempio 5!=5*4*3*2*1=120

mentre per convenzione 0!=1


Il fattoriale in Python

Realizziamo adesso un programma per il calcolo del fattoriale in Python.

Banner Pubblicitario

Prendiamo in input n e poniamo la variabile f uguale ad 1, cioè all’elemento neutro della moltiplicazione.

Dopo, con un ciclo for che ha l’indice i che varia da un range di 1 ad n+1, calcoliamo il fattoriale eseguendo questa operazione f = f * i.

Quindi se ad esempio n è uguale a 5 avremo questi passaggi:

f=1*1, f=1*2, f=2*3, f=6*4, f=24*5

In output stamperemo dunque 120.

Una possibile implementazione dell’algoritmo può essere dunque questa:


n=int(input('Inserire il numero: '))
f=1

for i in range(1,n+1):
    f*=i
    
print(n)

Soluzione ricorsiva al fattoriale

Possiamo anche trovare una soluzione ricorsiva. Diamone innanzitutto la definizione.

Banner pubblicitario

Si definisce ricorsiva una funzione che invoca se stessa.

La tecnica ricorsiva consente di scrivere algoritmi eleganti, ma non sempre rappresenta la soluzione più efficiente. Ciò è dovuto al fatto che la ricorsione viene implementata con le funzioni e l’invocazione di una funzione ha chiaramente un costo rilevante.

Definiamo quindi una funzione ed all’interno controlliamo innanzitutto se n è uguale a 0, ritornando il valore 1. Altrimenti moltiplichiamo n per il fattoriale di n-1.

Proponiamo dunque la seconda soluzione al calcolo del fattoriale in Python che fa uso della ricorsione.


n = int(input('Inserire il numero: '))

def fattoriale(n):
    if n = =0:
        return 1
    else:
        return n*fattoriale(n-1)

print ('Il fattoriale è', fattoriale(n))

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math