Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Recursividad

No me queda claro aun el concepto de recursividad en funciones. ¿Seria como tener una funcion como condicion dentro de otra?

2 respuestas

"La recursividad es un concepto que se indica cuando un método se llama a si mismo. Cuando creamos un método recursivo debemos tener en cuenta que este tiene que terminar por lo que dentro del método debemos asegurarnos de que no se está llamando a si mismo todo el rato, Lo que quiere decir que el ciclo es finito."

  • Antonio, en este caso, la recursividad es una función que se define como una respuesta invocandose a si misma.
  • Imagina el factorial que se define asi...
  • En caso de que n>2, n! = n * (n-1)!
  • si n=1, 1!= 1
  • si n=0, 0!=1
  • Veamos el factorial de 5!
  • 5!= 5 * (5-1)!
  • =5* ( 4* (3-1)!)
  • =5* ( 4* 3* (2-1)!)
  • =5* ( 4* 3* 2*(1)!)
  • En este punto ya tenemos 1!, volvemos....
  • = 5 * (4 * 3 *2 * 1)
  • = 5 * ( 4 * 3 *2)
  • = 5 * ( 4 *6 )
  • = 5 * ( 24)
  • = 120
  • Antonio, la multiplicación desde el lado derecho ilustra como vamos regresando desde la recursión.
  • Probablemente, tu sepas la forma más directa, que no necesite recursión. En ese caso, la recursión implica manejar una pila de datos, para saber hacia donde debemos volver.

Hola Antonio.

La recursividad, en este contexto, es una función dentro de una función, en donde la función es la misma (por eso puede volverse un bucle infinito).

Yo tenía el mismo problema y me sirvió imaginar la recursividad como un hilo con una mano en la punta, que se enrolla hasta que encuentra algo y luego se desenrolla acarreando consigo lo que encontró.

Imagina que cada llamada recursiva añade una nueva vuelta al hilo, y una vez que se encuentra el caso base (en este caso el número único), el hilo comienza a desenrollarse, resolviendo cada llamada recursiva en orden inverso (devolviendo ese número único a través de todas las llamadas recursivas previas hasta llegar a la llamada inicial). Por eso, "return" (la mano) es crucial para resolver cada llamada recursiva en orden inverso y poder devolver un valor.

PD: Falto el return en mi código jaja.

Espero que sea útil y entendible esta explicación, Saludos.