Entiende la recursividad viendo la pila
Casi nadie se traba con la recursividad por el codigo. Se traba porque no ve lo que pasa en la memoria cuando un metodo se llama a si mismo. Aqui lo vas a ver: marco por marco, linea por linea, y con alguien contandote en palabras que acaba de pasar.
Nuevo en el tema? Empieza por Por que recursividad: que cuenta como recursion y que no, cuando conviene frente a un bucle, y en que programas que usas a diario hay recursion adentro.
Empieza por aqui
Este es factorial(5), el ejemplo de siempre. Dale a Reproducir y
fijate en una sola cosa: mientras la torre de marcos crece, no se multiplica
nada. Cada llamada solo deja anotado lo que le falta por hacer. La multiplicacion de
verdad ocurre despues, cuando la torre se derrumba y cada marco recibe el
valor que estaba esperando.
Si eso te suena raro ahora, es exactamente por lo que existe esta pagina.
-
Controles
Las flechas avanzan y retroceden un paso. Poder devolverte es la mitad del truco: ningun depurador de verdad te deja hacerlo comodo.
-
Parametros
Cambia el valor de n y vuelve a ejecutar. Prueba con 1, con 0, y con el maximo, para ver cuando revienta.
-
Narracion
La franja de arriba te dice en espanol que se apilo, que devolvio y a quien le toca seguir. No tienes que adivinar por que se movio una cajita.
Y en Sin y con recursion hay once problemas resueltos de las dos formas, con el codigo completo y comentado, y una tabla al final que dice exactamente que se optimizo en cada caso.
Si prefieres aprender haciendo en vez de leyendo, salta directo a Practica: ahi tu manejas la pila a mano, armas metodos pieza por pieza y juegas Torres de Hanoi con el mouse.
La ruta completa
Los niveles van en orden y cada uno se apoya en el anterior. El 0 no tiene ni una linea de recursion: es solo la pila de llamadas, porque sin eso lo demas es magia.
La pila de llamadas
Antes de la primera recursion: donde viven los metodos.
20 min · 3 preguntas Nivel 1Anatomia de un metodo recursivo
Caso base y caso recursivo: las dos unicas piezas.
30 min · 4 preguntas Nivel 2Antes y despues de la llamada
Lo que pasa al bajar no es lo que pasa al subir.
30 min · 3 preguntas Nivel 3Recursion multiple: del hilo al arbol
Cuando un metodo se llama dos veces, la pila deja de ser una linea.
40 min · 3 preguntas Nivel 4Recursion sobre estructuras
Aqui es donde entiendes para que existe la recursion.
40 min · 3 preguntas Nivel 5Backtracking
Elegir, explorar, deshacer.
50 min · 4 preguntas Nivel 6Divide y venceras
Partir en mitades, resolver, y unir.
50 min · 4 preguntas Nivel 7Memoizacion, recursion de cola y iteracion
Y la verdad incomoda: Java no optimiza la recursion de cola.
50 min · 4 preguntas Nivel 8Terreno avanzado
Recursion mutua, limites reales y cuando no usarla.
40 min · 3 preguntasNo necesitas cuenta para nada: el curso funciona completo y tu progreso se guarda en este navegador. Si inicias sesion, los resultados quedan guardados en el servidor y tu profesor puede ver en que pregunta se esta trabando el grupo.