Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Meio forçado usar recursão para iniciantes?

Em cursos iniciantes, recursão costuma ser apresentada depois de funções, condicionais e loops, porque exige entender bem como a execução das funções funciona. Muitas vezes, um for ou while é mais simples de entender para problemas básicos, enquanto a recursão é útil em situações específicas, como percorrer estruturas de dados em árvore, calcular fatorial, buscar arquivos em pastas e outros problemas que têm uma estrutura repetitiva.

1 resposta

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