La pila de llamadas
Antes de la primera recursion: donde viven los metodos.
Todavia no tienes claro que cuenta como recursion y que no? En Por que recursividad hay 12 fragmentos de codigo para clasificar: bucles, cadenas de llamadas, recursion mutua, envoltorios y estructuras que se contienen a si mismas.
La idea en una frase
Un metodo que llama a otro no desaparece: queda esperando en una pila, y esa pila es todo lo que hay que entender.
Antes de ver codigo
Piensa en una pila de platos sucios. Solo puedes tocar el de arriba. Si quieres el de abajo, primero tienes que sacar todos los que tiene encima, uno por uno. La memoria de tu programa funciona exactamente asi, y la JVM no tiene forma de saltarse ese orden.
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
Aqui es donde la teoria de arriba se vuelve concreta. Cambia los parametros, dale a Reproducir, y sobre todo usa las flechas para ir paso a paso: la velocidad automatica sirve para ver la forma general, pero lo que de verdad ensena es detenerse en un retorno y entender por que vuelve ahi y no a otro lado.
Comprueba lo que entendiste
Responde sin devolverte a leer. Si fallas no pasa nada: la explicacion te dice exactamente donde estaba el hueco, y ese es el momento en que de verdad se aprende. Con el 70% el nivel queda aprobado.