← Todas las guías

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

  1. factorial(1) devuelve 1.
  2. factorial(2) devuelve 2 × 1 = 2.
  3. factorial(3) devuelve 3 × 2 = 6.
  4. 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.