Recursividad en Java
Nivel 0 · 20 min

La pila de llamadas

Antes de la primera recursion: donde viven los metodos.

La JVM no improvisa

Cuando un metodo llama a otro, el primero no desaparece: queda esperando. La JVM guarda ese metodo en espera dentro de una estructura llamada pila de llamadas (call stack), y cada metodo en espera ocupa un bloque de memoria llamado marco (stack frame).

El marco guarda tres cosas: los parametros que recibio el metodo, sus variables locales, y la linea exacta a la que debe volver cuando el metodo llamado termine. Esa tercera cosa es la que casi nadie ve, y es la que explica todo lo demas.

Se apila y se desapila

La pila funciona como una pila de platos: el ultimo que entra es el primero que sale (LIFO). El metodo que se esta ejecutando siempre es el que esta arriba del todo. Los de abajo estan congelados, esperando su turno.

public static void a() {
    System.out.println("entro a A");
    b();
    System.out.println("salgo de A");
}

public static void b() {
    System.out.println("entro a B");
    c();
    System.out.println("salgo de B");
}

public static void c() {
    System.out.println("entro a C");
}

Fijate en el orden de la salida. Los "salgo de" aparecen al reves de los "entro a". Eso no es casualidad: es la pila desapilandose.

Por que esto importa tanto

La recursividad no es un concepto nuevo. Es exactamente esto mismo, con una sola diferencia: el metodo que se llama es el mismo. La pila no distingue ni le importa. Si entiendes la pila, la recursividad deja de ser magia y se vuelve contabilidad.

Ejecuta y observa

Cambia los parametros, dale a Reproducir, y usa las flechas para avanzar paso a paso. La pila crece hacia arriba: el marco de arriba es el que se esta ejecutando ahora mismo.

Comprueba lo que entendiste

Necesitas el 70% para dar el nivel por visto. Responde sin devolverte a la teoria: si fallas, la explicacion te dice exactamente donde estaba el hueco.