Calcular el factorial en Python

  1. Calcular el factorial de un número usando la iteración en Python
  2. Calcular el factorial de un número usando recursión en Python
  3. Calcular el factorial de un número usando la función math.factorial() en Python

Un factorial de un número es el producto de todos los enteros positivos menores o iguales a ese número. Por ejemplo, el factorial de 5 es el producto de todos los números que son menores e iguales a 5, es decir 5 * 4 * 3 * 2 * 1, que es igual a 120. Por lo tanto, el factorial del número 5 es 120.

Ahora vamos a escribir una función en Python para calcular el factorial de un número. Hay dos formas en las que podemos escribir un programa de factorial en Python, una utilizando el método de iteración y otra utilizando el método recursivo.

Calcular el factorial de un número usando la iteración en Python

El programa factorial usando el método de iteración no es más que usar bucles en nuestro programa como el bucle for o el bucle while. Al escribir un programa iterativo para el factorial en Python tenemos que comprobar tres condiciones.

  1. El número dado es negativo: Si el número es negativo, entonces simplemente diremos que no podemos encontrar el factorial porque el factorial de un número negativo no existe.
  2. El número dado es cero: Si el número es cero, entonces simplemente imprimiremos 1 porque el factorial de un número cero es 1.
  3. Un número dado es positivo: Si el número es positivo, entonces sólo encontraremos su factorial.
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)) 

Resultado:

Factorial of 5 is 120

Calcular el factorial de un número usando recursión en Python

La recursión no es más que llamar a la misma función una y otra vez. Usando la recursión, podemos escribir menos líneas de código, que serán mucho más legibles que el código que escribiremos usando el método iterativo.

Cada vez que llamamos a una función de recursión, se crea una pila de recursión en la memoria. Esta pila de recursividad tiene algo llamado contador de programa, que lleva la cuenta de la siguiente instrucción a ejecutar después de que la función de recursividad termine su ejecución.

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))

Resultado:

Factorial of 5 is 120

Calcular el factorial de un número usando la función math.factorial() en Python

¿Quieres escribir una función factorial en una sola línea? ¿Te parece imposible? Hay una manera de escribir una función factorial en una sola línea de código. Esto se puede hacer utilizando el módulo math. Dentro del módulo math, hay una función factorial para calcular el factorial de un número.

Tienes que importar esta función del módulo math, llamarla dentro de tu programa y pasar el número cuyo factorial quieres calcular. Vea el siguiente ejemplo.

from math import factorial

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

Producción:

Factorial is 120

Artículo relacionado - Python Math

  • Calcular la base logarítmica 2 de un número en Python
  • Raíz del cubo en Python