Acerca de la Recursividad
"Para entender la
recursividad, primero hay que entender la recursividad"
En mis ratos libres me gusta leer blogs
sobre programación. Así me topé con http://www.variablenotfound.com/2007/02/dnde-se-han-ido-los-programadores.html
y con http://www.codinghorror.com/blog/archives/000781.html
donde dice "If you can successfully write a loop that goes from 1 to 10 in
every language on your resume, can do simple arithmetic without a calculator,
and can use recursion to solve a real problem, you’re already ahead of the
pack!".
Entonces me faltaba la recursión o recursividad. Ya había leído sobre ella
antes, incluso bajado tutoriales, pero mi error fue intentar entenderla.
Como es una función que se llama a sí misma, no hay por dónde
"cogerla", lógicamente es algo autocontenido y que debería generar
un bucle infinito:
El límite, o parada, sucede cuando "i" llega a 10. Si "i"
es igual o mayor a 10 (partiendo de un valor inferior), simplemente sale de la
función y retorna el resultado de la suma total. No se debe perder tiempo
intentando entender la recursión basta saberla usar. Si se intenta entender
o hallar la secuencia lógica de la función de arriba no se llegará a ninguna
parte. La variable "i" recibe la respuesta de una función donde está
la propia variable "i" (y lo peor: en este caso la operación que debe
realizar la función sumaR está donde recibe los parámetros).
¿hay alguna manera de escapar de este bucle infernal?
Sí, en el momento en que "i" llega al valor donde se debe retornar
cero (ya no se llama a la función sumaR).
Recién llegué a comprender la recursión cuando dejé de intentar
comprenderla. Suena raro, pero así fue.