Como parte de unos artículos que quiero hacer en el futuro (en estos días), vamos a hablar de los factoriales. Creo que todos los que leen este artículo saben de que van los factoriales. Por las dudas vamos a hacer una pequeña explicación:
¿Qué es un factorial?
El factorial de un número n es el producto de todos los números desde el 1 hasta n. Por ejemplo, el factorial de 10 es:
10x9x8x7x6x5x4x3x2x1=3628800
Programando la función factorial
El factorial es un caso típico de recursión. O sea, la función factorial se va a ir llamando a si misma:
def fact(n): if n<2: return 1 else: return n*fact(n-1) nro=input("Ingrese el nro. del cual sacar el factorial: ") print fact(nro)
Como vemos la función factorial es recursiva. Supongamos que n==6.
Entra en la primera ocasión con n==6 y como n>1 retorna n*fact(5). Así que tiene que entrar a hacer la función factorial con 5, donde nuevamente va a seguir el mismo camino y llama a fact(4) y así, por lo que básicamente está haciendo algo como esto:
6*5!
6*5*4!
6*5*4*3!
6*5*4*3*2!
6*5*4*3*2*1!
Como ahí llegó al “caso base”, vamos hacia atrás, las multiplicaciones:
6*5*4*3*2*1
6*5*4*3*2
6*5*4*6
6*5*24
6*120
720
Y finalmente ese es el resultado. Es increible como la recursión nos ahorra un montón de código y hace muchísimo.
Esta función la vamos a usar mucho para futuros artículos matemáticos que estoy preparando.