Actualmente estoy estudiando la recursividad en la escuela, y tengo problemas para pensar en los métodos cuando hay muchas llamadas recursivas. Solo quiero preguntar cómo debería pensar en la recursión porque sé que rastrear las llamadas al método en cada paso será demasiado tedioso.¿Cómo debe abordar la recursión?
En lugar de seguir cada llamada recursiva, lo que cubrimos brevemente fue pensar en la recursión por inducción, pero el problema que tengo es ver cómo la inducción se puede aplicar a situaciones distintas de las matemáticas. Al igual que si hay un método que imprime de forma recursiva los números de la siguiente manera:
public void blah(int n)
{
for (int i = 0; i < n; i++)
blah(i);
System.out.print(n);
}
tengo problemas para pensar acerca de lo que imprime, y yo no puedo ver cómo la inducción podría ser relevante aquí (perdón por mi ignorancia si puede ser usado en todas partes).
Pero supongo que mi verdadera pregunta es cómo puede abordar la recursión sin tener que rastrear cada llamada a un solo método. ¿Es lo mejor que puedes hacer para ver el caso base y el tipo de trabajo al revés? (Pero incluso entonces creo que me confundo sobre lo que sucede).
Parece que una de tus personas mayores en la escuela ya había preguntado esto antes. Mira aquí: http://stackoverflow.com/questions/717725/understanding-recursion –
@CowZow: related: http://stackoverflow.com/questions/105838/real-world-examples-of-recursion – Jayan