Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

La recursión es una técnica especial de programación donde una función se llama a sí misma para resolver un problema.
Al principio, esta idea puede parecer un poco mágica — o un poco extraña — pero es una herramienta muy poderosa una vez que la entiendes.

Piénsalo como mirar dos espejos enfrentados. Ves un reflejo dentro de otro reflejo, que continúa una y otra vez… hasta que finalmente se desvanece. En la recursión, ese “desvanecimiento” es crucial — lo llamamos el caso base, y es lo que detiene la repetición.

Cómo Funciona la Recursión

Una función recursiva:

  1. Verifica si debe detenerse — este es el caso base.
  2. Si no, se llama a sí misma, pero con una versión más pequeña o simple del problema original.

Al descomponer repetidamente un problema en partes más pequeñas, la recursión puede alcanzar la versión más simple posible del problema, resolverla y luego reconstruir la respuesta a medida que regresa de todas las llamadas.

Ejemplo: Cálculo del Factorial

Tomemos el factorial de un número.
En matemáticas, el factorial de n (escrito como n!) significa:

n! = n × (n-1) × (n-2) × ... × 1

Por ejemplo:

5! = 5 × 4 × 3 × 2 × 1 = 120

Aquí está la versión recursiva en Python:

def factorial(n):
    if n == 0:  # caso base
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 120

Qué sucede aquí:

  • Si n es 0, hemos alcanzado el caso base — por definición, 0! es igual a 1.
  • De lo contrario, multiplica n por factorial(n - 1) (una versión más pequeña del mismo problema).
  • Esto se repite hasta llegar al caso base.

¿Por Qué Usar Recursión?

La recursión puede ser:

  • Elegante y concisa para problemas que son naturalmente repetitivos en su estructura.
  • Perfecta para problemas matemáticos (factoriales, números de Fibonacci).
  • Esencial para navegar datos con estructura de árbol (sistemas de archivos, árboles genealógicos, búsqueda en IA de juegos).

A veces la recursión incluso puede reemplazar bucles, aunque no siempre es la opción más eficiente.

TIP: La recursión suele ser más fácil de entender cuando piensas en “dividir el problema en versiones más pequeñas de sí mismo hasta poder resolverlo directamente.”

Errores Comunes

¡IMPORTANTE!: Siempre define un caso base — sin él, la función se llamará a sí misma para siempre hasta que Python lance un RecursionError.

Solución de problemas:

  • “RecursionError: maximum recursion depth exceeded” → No alcanzaste el caso base, o tu caso base es incorrecto.
  • Si la recursión parece demasiado compleja para el problema, prueba con un bucle en su lugar.

La recursión puede parecer desconcertante al principio, pero es solo otra forma de hacer tu código más inteligente y adaptable. Una vez que la practiques con algunos problemas, verás que no solo es poderosa sino que también puede hacer tu código sorprendentemente corto y elegante.