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.
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.
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
8 – Errori in Python
9 – Script Python
10 – Scambio di variabili
11 – Modulo math