seegongsik
Programación

Qué es la recursión

Dijimos que una función puede llamar a otras funciones (lección 9). Entonces, ¿qué pasa cuando una función se llama a sí misma? Como dos espejos frente a frente, lo mismo aparece dentro una y otra vez.

01

Una función que se llama a sí misma

En la lección 9, una función era un grupo de tareas con nombre, y podía llamar a otras funciones.
La recursión va un paso más allá: una función vuelve a llamarse a sí misma.
Como un espejo dentro de un espejo, aparece lo mismo una capa más adentro.

Profundidad 0

Cada vez que pulsas "una capa más", aparece el mismo marco una capa más adentro.

Es fascinante, y también da un poco de miedo.
Si se sigue llamando así, ¿no seguirá para siempre?
Exacto. Por eso la recursión necesita una cosa imprescindible.

02

Tiene que haber un lugar donde parar

Dos espejos sí siguen sin fin, pero una computadora no puede hacer algo "para siempre".
Así que se fija una regla: "Cuando el trozo sea lo bastante pequeño, para ahí".
Sin esta regla de parada, da vueltas sin fin y se derrumba.

3

Activa la regla de parada y se detiene justo en 3, 2, 1. Desactívala y sigue bajando hasta derrumbarse.

Ayuda pensar en el punto de parada como el "fondo".
Hasta llegar al fondo, sigue llamándose; al llegar, deja de llamarse.
Entonces, la clave es cómo dividir el problema.

03

Una versión más pequeña del mismo problema

El verdadero secreto de la recursión es ver un problema grande como "un paso + el mismo problema, pero más pequeño".
Una escalera entera es un escalón más el resto de la escalera, y el resto es el mismo problema, solo que con un escalón menos.
Se va haciendo más pequeño hasta llegar a 0 escalones, y ahí termina.

Escalones que quedan 5

Cada vez que pulsas "quitar un escalón", la escalera pierde un escalón. Lo que queda es siempre "lo mismo, pero más pequeño".

De pronto, un problema difícil se vuelve fácil.
No hace falta resolverlo todo de una vez: te ocupas solo de "un escalón" y le devuelves el resto a la misma función.
Pero ¿cómo vuelve el trabajo que encargaste?

04

Bajar y volver a subir

La recursión se mueve en dos direcciones.
Primero baja hasta el fondo, llamándose una y otra vez.
Al llegar al fondo, vuelve a subir, y cada nivel suma su parte.
Es igual que apilar platos y luego quitarlos empezando por arriba.

sum(3)
Bajando

Pulsa "siguiente paso" para bajar hasta el fondo de 1+2+3 y luego subir juntándolo en 6.

Este "bajar y volver a subir" es el corazón de la recursión.
Al bajar, divide el problema; al subir, junta las respuestas.
El trabajo apilado se va deshaciendo en orden desde el fondo.

05

Hermana de los bucles, y más allá

La recursión y los bucles (lección 7) son hermanos.
Los dos hacen lo mismo muchas veces, pero un bucle lo pone en fila, mientras que la recursión excava hacia dentro capa a capa.
Para cosas en las que de una rama salen más ramas, como carpetas dentro de carpetas, la recursión encaja perfecto.

Profundidad 1

Cada pulsación vuelve a dividir las ramas. La misma regla dibuja un árbol por sí sola.

La función que agrupa tareas bajo un nombre (lección 9) ahora puede llamarse incluso a sí misma.
Dividir en trozos pequeños, parar en el fondo y volver a juntar: esta sola idea resuelve carpetas, respuestas a respuestas y hasta laberintos.
En la próxima lección pasaremos a guardar valores en parejas.

En una líneaLa recursión es una función que se llama a sí misma. Divide un problema grande en "una versión más pequeña del mismo problema" y, al llegar al punto de parada, vuelve hacia arriba juntando la respuesta.
← Programación
¿Te fue útil? Apoyar seegongsik