Tema 4
Recursión
Patrón de examen
Cuando el mismo subproblema se resuelve múltiples veces, agrega memoización. Es el puente entre recursión pura y programación dinámica.
Explicación
Anatomía de una función recursiva
- Caso base: condición de parada. Sin él → stack overflow.
- Llamada recursiva: el problema se reduce en cada llamada.
- Combinación: los valores se ensamblan al regresar.
Visualizando la recursión
factorial(4)
└─ 4 * factorial(3)
└─ 3 * factorial(2)
└─ 2 * factorial(1)
└─ 1 ← caso base
Retorna: 1 → 2 → 6 → 24
Memoización
Si la misma llamada recursiva se repite, guardar el resultado en un arreglo. Convierte O(2ⁿ) en O(n).
Cuándo usar recursión
- Problemas que se dividen en subproblemas iguales
- DFS en árboles y grafos
- Backtracking
- Divide y vencerás
Límite del stack
Para n > 10⁵ de profundidad, prefiere iterativo o usa memoización + iteración (DP bottom-up).