Olá, Matheus! Tudo bem?
O problema que você está enfrentando parece estar relacionado ao comportamento recursivo da função numeroAleatorio.
Quando você chama a função sem retornar o resultado (numeroAleatorio() em vez de return numeroAleatorio()), a recursão continua sem retornar o valor correto para a chamada anterior. Isso pode levar a um comportamento inesperado, como o retorno de valores fora do intervalo desejado.
Na sua função numeroAleatorio, quando um número já sorteado é encontrado, você faz uma chamada recursiva para numeroAleatorio(). Se você não usar return nessa chamada recursiva, o valor retornado pela chamada recursiva não será propagado para a chamada original, resultando em um comportamento imprevisível.
Certifique-se de sempre usar return ao chamar a função recursivamente:
function numeroAleatorio() {
let numeroEscolhido = parseInt(Math.random() * 10) + 1;
if (numerosJaSorteados.includes(numeroEscolhido)) {
return numeroAleatorio(); // Use return aqui
} else {
numerosJaSorteados.push(numeroEscolhido);
console.log(numerosJaSorteados);
return numeroEscolhido;
}
}
Dessa forma, o valor correto será retornado e propagado para todas as chamadas recursivas anteriores.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.