Factorial Recursivo
Calcula el factorial de un número usando recursión. Comprende el caso base y el caso recursivo, los pilares de cualquier función recursiva.
recursion caso base call stack math.factorial
El problema
Escribe una función factorial(n) que calcule el factorial de n usando recursión.
El factorial de n (escrito n!) se define como:
0! = 1(caso base)n! = n × (n-1)!(caso recursivo)
Ejemplos
| n | n! | cálculo |
|---|---|---|
0 | 1 | Caso base |
1 | 1 | 1 × 0! = 1 × 1 |
5 | 120 | 5 × 4 × 3 × 2 × 1 |
10 | 3628800 | — |
Código inicial
def factorial(n):
# Tu código aquí
pass
print(factorial(0)) # 1
print(factorial(5)) # 120
print(factorial(10)) # 3628800
Concepto clave: recursión
Una función recursiva se llama a sí misma con un problema más pequeño hasta llegar al caso base:
factorial(5)
= 5 × factorial(4)
= 4 × factorial(3)
= 3 × factorial(2)
= 2 × factorial(1)
= 1 × factorial(0)
= 1 ← caso base
El caso base es imprescindible. Sin él, la función se llama a sí misma infinitamente hasta producir RecursionError.
Versión iterativa (sin recursión)
def factorial_iterativo(n):
resultado = 1
for i in range(2, n + 1):
resultado *= i
return resultado
Versión con reduce
from functools import reduce
def factorial_reduce(n):
if n == 0:
return 1
return reduce(lambda a, b: a * b, range(1, n + 1))
Próximos pasos
- Implementa
fibonaccide forma recursiva y compara la profundidad del call stack - Estudia por qué la recursión de Fibonacci es ineficiente (recalcula subproblemas) y cómo solucionarlo con
@functools.lru_cache - Prueba el límite de Python con
import sys; sys.getrecursionlimit()