Conceptos Básicos de Python: Tus Primeros Pasos en Programación
Recursión
Lesson 7 of 16 • 10 XP
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:
- Verifica si debe detenerse — este es el caso base.
- 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
nes 0, hemos alcanzado el caso base — por definición,0!es igual a 1. - De lo contrario, multiplica
nporfactorial(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.