Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

¿Por qué la necesidad de agregarle un return en la recursividad?

Analizando el codigo, me encontre con la duda de porqué razón en este codigo (donde se utiliza la recursividad):

function generarNumeroSecreto() {
    let numeroGenerado = Math.floor(Math.random() * numeroMaximo) + 1
    console.log(numeroGenerado)
    console.log(listaNumerosSorteados)
    if(listaNumerosSorteados.length == numeroMaximo){
        asignarTextoElemento('p','Ya se sortearon todos lo números posibles')
    }else{
        if(listaNumerosSorteados.includes(numeroGenerado)){
            return generarNumeroSecreto() /* Justo en esta parte, se está retornando la misma función */
        }else{
            listaNumerosSorteados.push(numeroGenerado)
            return numeroGenerado
        }
    }
    
}

Por qué razón se utiliza el return? A caso no se puede simplemente llamar otra vez la función como se suele hacer normalmente (sin necesidad de retornar); aunque ya probe con quitarle el return y el resultado me confundio mucho pues al principio funciona bien, pero después deja de funcionar, y esto varía. Entonces me gustaría que alguien me resolviera esta duda, la razón del porque se debe retornar la función y no simplemente llamarla

1 respuesta

Si no me equivoco el uso del return es porque necesitas devolver un valor a donde estas llamando la función originalmente, pero al devolver la función en si como valor esta se vuelve a llamar haciendo así uso de la recursividad, es como que te devuelve una llamada para si misma al mismo tiempo que termina su llamada anterior.

Al quitar el return varia tanto los valores o mas bien el comportamiento de la función, ya que al principio tienes una probabilidad baja de que entre en el ciclo recursivo pero con forme avanzas en el juego entra finalmente en el recursivo pero al no devolver la llamada y terminarla al mismo tiempo, ejecutas una llamada de la función en la misma función provocando un funcionamiento errado de la misma.