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

[Bug] No me funciona la recursividad

Cuando intento hacer la funcion generarNumeroSecreto de la siguiente forma:

function generarNumeroSecreto() {

let numeroGenerado = Math.floor(Math.random()*10)+1;
console.log(numeroGenerado);
console.log(listaNumerosSorteados);
// si el numero generado esta incluido en la lista.
if(listaNumerosSorteados.includes(numeroGenerado)){
    return generarNumeroSecreto();
} else {
    listaNumerosSorteados.push(numeroGenerado);
    return numeroGenerado; 
}
}

la consola me arroja el siguiente error:

app.js:69 Uncaught ReferenceError: Cannot access 'listaNumerosSorteados' before initialization at generarNumeroSecreto (app.js:69:17) at app.js:9:21

No entiendo por que, ademas en el video Leo le asigno el valor 0 a la variable numeroSecreto.

No se como podria arreglar el codigo para que funcione apropiadamente

4 respuestas

¿Dónde inicializaste el array? Porque el error que te lanza tiene que ver con eso, y en el fragmento de código que pegaste no se puede ver. Leo le asigna un valor a la variable por seguridad, para que tenga contenido un dato numérico de entrada, pero es posible declarar la variable sin asignarle un valor de entrada y de todos modos funciona.

Lo inicie en el puro principio del código como se ve en la imagen. intente asignarle la funcion generarNumeroSecreto a numeroSecreto pero no me funciono, tambien intente dejarla sin nada e igual intente solo dejarla en 0 pero el programa nunca termina, siempre me dice que el numero es mayor.

Hola, creo que yo tenia el mismo problema que tu, si te fijas puede que en tu código se presente de la siguiente manera:

let numeroSecreto = generarNumeroSecreto();
let intentos = 1;
let listaNumerosSorteados = [];

El problema va por que la variable numeroSecreto esta llamando a la función de generarNumeroSecreto, y por el código que estas añadiendo estas intentando acceder al contenido de esa lista pero antes de crearla. Lo pude solucionar simplemente moviendo la lista vacia al inicio:

let listaNumerosSorteados = [];
let numeroSecreto = generarNumeroSecreto();
let intentos = 1;

Espero te sirva. Saludos!

Hola, tambien tuve este error, me demore 1 hora, lei la respuesta de Luis Fernando, me sirvio, pero me di cuenta que la variable numero secreto estaba llamando a la funcion por lo tanto esto produce un bug, vi el video y Leonardo tiene en esa variable un 0. Yo lo tenia asi.

let numeroSecreto = generarNumeroSecreto();
let intentos = 1;
let listaNumerosSorteados = [];

Mientras que debia tener la variable numeroSecreto en 0

let numeroSecreto = 0;
let intentos = 1;
let listaNumerosSorteados = [];