Fattoriale

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

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

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

mentre per convenzione 0!=1


Fattoriale in Python

Realizziamo adesso il 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 con range da 1 ad n+1, calcoliamo il fattoriale con questa operazione f=f*i.

Quindi se n=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 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

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 un costo rilevante.

Definiamo quindi una funzione fattoriale e 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 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

Autore dell'articolo: Cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *