Si alguna vez has mirado una función recursiva y te has sentido como si estuvieras atrapado en un reflejo infinito en un espejo, ¡bienvenido! Este artículo es para ti. Hoy vamos a desmontar la recursividad. Simple, divertido, fácil y con un montón de ejemplos. ¡Vamos! 🚀

🔎 ¿Qué es la recursión, en términos humanos?
La recursividad es cuando una función se llama a sí misma (¡no te asustes!). Esto es necesario para resolver un problema dividiéndolo en subtareas más pequeñas. Esto se repite hasta que llegamos al llamado caso básico — puntos de parada.
🎭 Imagina un reflejo infinito entre dos espejos. Tú, luego un poco menos tú, luego un microtu, y así sucesivamente. Esto es una recursión. Solo que en lugar de reflejos, llamadas a funciones. Además, cada una de estas llamadas es un poco más fácil que la anterior, hasta que llegamos a una que incluso una tetera puede manejar (¡es decir, una función de tetera!).
📦 U otro ejemplo: imagina una caja dentro de una caja, y dentro de ella otra caja, y así hasta llegar a la última, la más pequeña. En programación, esta última caja es nuestro caso base. Eso es todo, no hay nada más que «desempaquetar», es hora de recoger el resultado.
📌 Ejemplo 1: factorial - el favorito de las recursiones
Factor los números n (denotados por n!) son el producto de todos los números de 1 a n.
Ejemplo:
5! = 5 × 4 × 3 × 2 × 1 = 120Implementación recursiva en Python:
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)Cada llamada reduce n hasta que llegamos a 1 o 0, y entonces la función comienza a devolver el resultado. Es muy similar a bajar por un tobogán con un retorno por las escaleras.
📌 Ejemplo 2: suma de números hasta n
Ahora sumemos todos los números de 1 a n:
def sum_to(n):
if n == 1:
return 1
else:
return n + sum_to(n - 1)Llamada sum_to(5):
sum_to(5)
= 5 + sum_to(4)
= 5 + (4 + sum_to(3))
= 5 + (4 + (3 + sum_to(2)))
= 5 + (4 + (3 + (2 + sum_to(1))))
= 5 + 4 + 3 + 2 + 1 = 15Aquí está, la magia de la recursión: la tarea se «reduce» a algo comprensible, y luego se «pliega» en la respuesta.
📌 Ejemplo 3: cuenta atrás (y una habilidad útil)
def countdown(n):
if n == 0:
print("Let's go!")
else:
print(n)
countdown(n - 1)Ejecuta countdown(5) y verás:
5
4
3
2
1
Поехали!La recursividad no siempre tiene que devolver valores, puede simplemente realizar acciones. ¡Esta es una gran manera de empezar a aplicarla!
🧨 Errores que casi todo el mundo comete (y cómo evitarlos)
❌ Se olvidó el caso básico — y hola a la recursión infinita. Comprueba dónde debe detenerse la función.
❌ Condición incorrecta — por ejemplo,
if n == 0en lugar den <= 0, y vuelas de nuevo al infinito.❌ Recursión donde es más fácil sin ella — pregúntate siempre: «¿Es realmente necesaria la recursión aquí?».
🌟 Cuando la recursividad realmente manda
La recursividad es útil cuando:
Hay que rodear estructuras anidadas, por ejemplo, carpetas o JSON.
Tarea se divide naturalmente en partes (por ejemplo, clasificación, árbol de búsqueda).
Hay que probar todas las rutas — ideal para encontrar soluciones en rompecabezas (laberinto, sudoku, etc.).
📈 Desventajas de la recursividad (no te asustes, solo debes conocerlas)
Cada llamada recursiva es una memoria adicional (pila de llamadas).
Muchos niveles → la pila se desborda (especialmente en Python).
Funciona más lento que los ciclos normales si no se optimiza.
✨ Cómo hacerse amigo de la recursividad para siempre
✏️ Dibuja — árbol de llamadas, pila, secuencia de acciones.
🎮 Practica — resuelve problemas, incluso los más simples: factorial, suma, línea en orden inverso.
🔍 Seguimiento de la ejecución — paso a paso, con
print()o en el depurador.🧪 Comparar con ciclos — escribe ambas versiones para ver los pros y los contras.
🧪 Ejemplo 4: inversión de una cadena
def reverse_string(s):
if len(s) == 0:
return ""
return s[-1] + reverse_string(s[:-1])reverse_string("Code") → "kidoK"
Así es como puedes voltear las líneas, y de forma bonita y clara.
🎬 Resumamos
La recursión es:
una forma de dividir una tarea en pasos sencillos;
función que se llama a sí misma hasta que se alcanza la condición base;
magia que se puede dominar.
Si todavía no lo entiendes del todo, vuelve a leer el artículo. Esto también es una recursión 😉
