Recursão — fatorial
Recursão aparece em problemas reais como navegação em árvores de diretórios, processamento de JSON aninhado ou algoritmos de ordenação como merge sort. O padrão 'função que chama a si mesma' elimina a necessidade de loops manuais e torna o código mais declarativo. Dominar recursão é essencial para lidar com dados hierárquicos e problemas que podem ser decompostos em subproblemas idênticos.
O PROBLEMA
Crie função recursiva fatorial(n) sem usar loops.
EXEMPLO
fatorial(5) → 120 fatorial(0) → 1
SOBRE O CONCEITO
Recursão exige um caso base que interrompe as chamadas e uma chamada recursiva que aproxima o caso base. No fatorial, o caso base é n === 0 retornando 1, e a chamada recursiva é n * fatorial(n - 1). Erro comum: esquecer o caso base — sem ele, a função entra em loop infinito e causa stack overflow. Outro erro é usar caso base errado, como n === 1, que falha para fatorial(0), que deve retornar 1. Atenção: a função deve ser declarada com function (arrow function é proibida) e usar if para verificar a condição de parada.
RESOLUÇÃO