Calcola fattoriale in Python

  1. Calcola il fattoriale di un numero usando l’iterazione in Python
  2. Calcola il fattoriale di un numero usando la ricorsione in Python
  3. Calcola il fattoriale di un numero usando la funzione math.factorial() in Python

Un fattoriale di un numero è un prodotto di tutti i numeri interi positivi minori o uguali a quel numero. Ad esempio, il fattoriale di 5 è il prodotto di tutti i numeri che sono minori e uguali a 5, cioè 5 * 4 * 3 * 2 * 1, che è uguale a 120. Pertanto, il fattoriale del numero 5 è 120.

Ora scriviamo una funzione Python per calcolare il fattoriale di un numero. Ci sono due modi in cui possiamo scrivere un programma fattoriale in Python, uno usando il metodo di iterazione e un altro usando il metodo ricorsivo.

Calcola il fattoriale di un numero usando l’iterazione in Python

Il programma fattoriale che usa il metodo di iterazione non è altro che l’uso di cicli nel nostro programma come il ciclo for o il ciclo while. Durante la scrittura di un programma iterativo per fattoriale in Python dobbiamo verificare tre condizioni.

  1. Il numero dato è negativo: se il numero è negativo, diremo semplicemente che non possiamo trovare il fattoriale perché il fattoriale di un numero negativo non esiste.
  2. Il numero dato è zero: se il numero è zero, stamperemo semplicemente 1 perché il fattoriale di un numero zero è 1.
  3. Il numero dato è positivo: se il numero è positivo, solo noi troveremo il suo fattoriale.
def factorial(num): 
    if num < 0: 
        print("Factorial of negative num does not exist")

    elif num == 0: 
        return 1
        
    else: 
        fact = 1
        while(num > 1): 
            fact *= num 
            num -= 1
        return fact 

num = 5; 

print("Factorial of",num,"is", factorial(num)) 

Produzione:

Factorial of 5 is 120

Calcola il fattoriale di un numero usando la ricorsione in Python

La ricorsione non è altro che chiamare ripetutamente la stessa funzione. Usando la ricorsione, possiamo scrivere meno righe di codice, che sarà molto più leggibile del codice che scriveremo usando il metodo iterativo.

Ogni volta che chiamiamo una funzione di ricorsione, viene creato uno stack di ricorsione in memoria. Questo stack di ricorsione ha qualcosa chiamato contatore di programma, che tiene traccia di quale istruzione deve essere eseguita successivamente dopo che la funzione di ricorsione termina la sua esecuzione.

def factorial(n): 
    return 1 if (n==1 or n==0) else n * factorial(n - 1);  
  
num = 5; 
print("Factorial of",num,"is", factorial(num))

Produzione:

Factorial of 5 is 120

Calcola il fattoriale di un numero usando la funzione math.factorial() in Python

Vuoi scrivere una funzione fattoriale in una sola riga? Ti sembra impossibile? C’è un modo per scrivere una funzione fattoriale in una sola riga di codice. Questo può essere fatto usando il modulo math. All’interno del modulo math, c’è una funzione factorial per calcolare il fattoriale di un numero.

Devi importare questa funzione dal modulo matematico, chiamarla all’interno del tuo programma e passare il numero di cui vuoi calcolare il fattoriale. Vedi l’esempio sotto.

from math import factorial

print ("Factorial is", factorial(5))

Produzione:

Factorial is 120

Articolo correlato - Python Math

  • Calcola logaritmo in base 2 di un numero in Python
  • Radice quadrata in Python