03 · FUNCIONES
Entender la recursividad en Python con factorial
Una función recursiva se llama a sí misma para resolver un problema más pequeño. Cada llamada tiene sus propios parámetros y espera el resultado de la siguiente.
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
resultado = factorial(4)
print(resultado)Explorar el ejemplo en Traza ↗Primero bajan las llamadas
factorial(4) necesita factorial(3), que necesita factorial(2), que llama a factorial(1). En este ejemplo trabajamos con enteros no negativos.
El caso base detiene la recursión
Cuando n vale 1, la condición es verdadera y la función devuelve 1 sin hacer otra llamada. El caso base también hace que factorial(0) devuelva 1.
Después suben los resultados
factorial(1)devuelve 1.factorial(2)devuelve 2 × 1 = 2.factorial(3)devuelve 3 × 2 = 6.factorial(4)devuelve 4 × 6 = 24.
Qué observar en Traza
Selecciona el modo avanzado para explorar la pila y el árbol de llamadas. Cada llamada tiene su propio valor de n: cambiar de llamada permite inspeccionar su contexto. Usa «Salir de la función» para avanzar hasta su retorno.
Un error frecuente
Si el argumento no se acerca al caso base, las llamadas siguen creciendo hasta alcanzar un límite. La recursión necesita tanto una condición de parada como un avance hacia ella. Esta versión didáctica no valida los argumentos: no es una implementación general para cualquier número.