Tutorial de matemáticas con Python: Calcula el factorial de un número

Autor: | Última modificación: 11 de febrero de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Hoy te mostraremos cómo usar matemáticas con Python con un sencillo método para calcular el factorial de un número, para el que usaremos el concepto de recursividad. 

Matemáticas con Python [Ejercicio]

Para empezar con nuestras matemáticas con Python y como sacar el factorial en python, diremos que el factorial py de un número natural «n» es el resultado del producto de todos los números desde 1 hasta dicho número «n». Así, para efectuar el cálculo del factorial de un número, vamos a emplear una sencilla función a la que daremos el nombre de «factorial», de modo que, partiendo del hecho de que el factorial de 1 y 0 es 1, construiremos nuestra función (a la que daremos el nombre de «factorial») para realizar el cálculo del factorial de 5:

#Matemáticas con Python
#CALCULANDO EL FACTORIAL DE UN NÚMERO ("n").

#FUNCIÓN PARA CALCULAR EL FACTORIAL.

def factorial(n):
   if n==0 or n==1:
            resultado=1
   elif n>1:
            resultado=n*factorial(n-1)
   return resultado

#CALCULAMOS EL FACTORIAL DE 5.
fact5=factorial(5)

#VISUALIZAMOS RESULTADO.
print(fact5)
120

Lo que hace esta función es tomar como argumento un número «n», de modo que si este es 0 o 1 («if n==0 or n==1:»), la función devolverá directamente como resultado el número 1 («resultado=1»). Sin embargo, si dicho número «n» es mayor que 1 («elif n>1:»), haremos que el resultado («resultado») sea igual al producto de dicho número por el resultado de aplicar la misma función factorial pytho por el mismo número menos 1 («resultado=n*factorial(n-1)»).

La peculiaridad de esta función de matemáticas con Python reside, precisamente, en ese último hecho, dado que se trata de una función que contiene una llamada a sí misma. Esto es lo que se conoce como función recursiva.

¿Cómo funciona exactamente la función recursiva factorial?

Para comenzar con nuestro ejercicio de matemáticas con Python, explicaremos que el cálculo del factorial de un número «n» mayor que 1 se realiza mediante un proceso en el cual multiplicamos dicho número por el factorial del número inmediatamente inferior a él (n-1). Es importante destacar que si el número es igual a 1, el resultado del factorial será directamente 1.

El problema es que tampoco sabemos el factorial de «n-1», con lo que tendremos que dejar el cálculo del factorial de «n» en espera mientras calculamos el factorial de «n-1». Continuaremos realizando esta operación de manera iterativa hasta que «n» alcance el valor de 1. En este punto, obtendremos un resultado específico (1). Este resultado se aplicará de forma acumulada a las funciones factoriales que hayamos dejado en espera.

Para ilustrar este proceso de matemáticas con Python, nos valdremos de una imagen mediante la que expresamos cómo funciona nuestra función recursiva factorial para un valor de «n» igual a 4, en donde hemos sustituido «n» por su valor actual en cada paso del proceso recursivo:

Matemáticas con Python

Así, partimos de n=4 como argumento. Dado que 4 es mayor que 1, el «resultado» será igual al producto de 4 por la aplicación de la misma función factorial sobre 3 («n-1»). A su vez, como 3 sigue siendo mayor que 1, el «resultado» será 3*factorial(2).

Ahora aplicamos la función factorial sobre 2, que sigue siendo mayor que 1, con lo que el «resultado» será 2*factorial(1). Cuando «n» adopta el valor de 1, se produce el hecho de que obtenemos, en la función un resultado concreto («resultado=1»), con el que emprenderemos el camino de vuelta, aplicándose los resultados, sucesivamente y de forma acumulada, a las funciones que habían quedado en espera, hasta obtener el resultado final de 24.

Bootcamp web

Así nuestra función nos daría un resultado final de 24. A su vez, si introducimos una sentencia «print» para visualizar el valor de «resultado», podríamos ver los valores acumulados de las sucesivas funciones factorial hasta llegar el resultado final:

#Matemáticas con Python
#FUNCIÓN PARA CALCULO DEL FACTORIAL DE "n".
def factorial(n):
       if n == 0 or n == 1:
             return 1
       else:
               resultado = n * factorial(n - 1)
               return resultado

#calculamos el factorial de 4
ress = factorial (4)
print (ress)

Lo que da como resultado:

#FUNCI”N PARA CALCULO DEL FACTORIAL DE "n". def factorial(n): if n== 0 or n == 1: resultado = 1 print(resultado) elif n > 1: resultado = n * factorial(n-1) print(resultado) return resultado ress=factorial(4) print(ress)

Un saludo, muchas gracias.

Antonio Alfonso Martínez

Antonio Alfonso Martínez

Programador y desarrollador autodidacta. Semanalmente publica en el blog El programador Chapuzas (wordpress) y colabora en las páginas “Código Comentado” y “Algoritmos MathPy” de Facebook.