1
resposta

[Dúvida] O porquê do erro em não retornar a função

Apenas um erro curioso, que gostaria de saber se teria alguma explicação. Na função numeroAleatório, linha 39 , se eu não retornar a função (return numeroAleatorio() ) e apenas chamá - la (numeroAleatorio()), a partir da quarta requisição, o código gera um número fora do intervalo (1 a 10) e muito grande !

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Aqui está o resultado do erro (o número secreto é 4, mas sempre vai dizer que o número é maior): Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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 ✓.