¡Hola Rafael!
Entiendo que estás trabajando en la implementación de una función en JavaScript para generar un número secreto y verificar si ya ha sido sorteado, utilizando recursividad. La idea es que la función se llame a sí misma hasta que genere un número que no esté en la lista de números sorteados, evitando así la repetición.
Basándome en el contexto que compartiste, parece que estás teniendo dificultades con la condición de salida de la recursividad, ya que puede causar un problema de ejecución infinita si no se controla adecuadamente. Es importante establecer una condición que detenga la recursividad en un momento dado para evitar que la función se llame infinitamente.
Una posible solución sería establecer una condición que verifique si ya se han sorteado todos los números posibles, de modo que la recursividad se detenga en ese punto. Por ejemplo, podrías verificar si la lista de números sorteados ya contiene todos los números posibles, y en ese caso, detener la recursividad.
Aquí te dejo un ejemplo de cómo podrías implementar esta condición de salida en tu función:
function generarNumeroSecreto(listaNumerosSorteados) {
// Lógica para generar un número aleatorio
if (listaNumerosSorteados.length === cantidadTotalNumerosPosibles) {
// Si la lista ya contiene todos los números posibles, detenemos la recursividad
return null; // O cualquier valor que indique que no se pudo generar un número secreto
}
// Resto de la lógica para verificar si el número ya fue sorteado y llamar recursivamente si es necesario
}
Recuerda que este es solo un ejemplo y que debes adaptar la condición de salida a tu lógica específica. Espero que esta sugerencia te ayude a resolver el problema de la ejecución infinita en tu función recursiva.
Espero haber ayudado y ¡buenos estudios!