Olá, Anderson! Tudo bem?
Você levantou uma questão muito interessante sobre o uso da recursão em cursos para iniciantes. Realmente, a recursão pode ser um conceito desafiador de entender no início, especialmente quando comparada a loops como for e while, que são mais diretos para problemas simples.
No exemplo que você mencionou, a recursão é usada para garantir que um número aleatório não seja repetido na lista de números sorteados. A função gerarNumeroAleatorio() chama a si mesma se o número sorteado já estiver na lista, até que um número novo seja encontrado. Essa abordagem é eficaz para problemas em que a solução natural é dividir o problema em subproblemas menores, como no caso de percorrer árvores ou calcular fatoriais.
Porém, é importante ter cuidado com recursão, principalmente em projetos maiores, pois pode levar a problemas de desempenho ou até mesmo a um estouro de pilha se não for bem controlada. Em muitos casos, um loop pode ser uma alternativa mais simples e eficiente, especialmente para iniciantes.
Por exemplo, no caso do sorteio de números, uma abordagem com loop poderia ser usada para evitar a recursão:
function gerarNumeroAleatorio() {
let numeroEscolhido;
do {
numeroEscolhido = parseInt(Math.random() * 10 + 1);
} while (listaDeNumerosSorteados.includes(numeroEscolhido));
listaDeNumerosSorteados.push(numeroEscolhido);
return numeroEscolhido;
}
Essa versão usa um do...while loop para continuar gerando números até encontrar um que não esteja na lista. Isso pode ser mais fácil de entender para iniciantes e evita a complexidade adicional que a recursão pode trazer.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.