Fatorial recursivo
Recursão é uma técnica onde uma função chama a si mesma para resolver subproblemas menores. Em código real, ela aparece em tarefas como percorrer árvores de diretórios, processar estruturas aninhadas como JSONs profundos, ou implementar algoritmos de busca como DFS. Dominar recursão é essencial porque muitos problemas encaixam naturalmente nesse padrão — tentar resolvê-los com loops pode gerar código mais complexo e menos legível.
O PROBLEMA
Crie função recursiva fatorial(n) sem loops.
EXEMPLO
fatorial(5) → 120 fatorial(0) → 1
SOBRE O CONCEITO
A função fatorial(n) deve retornar o produto de todos os inteiros de 1 até n, e a definição recursiva clássica é: se n == 0, retorne 1 (caso base); senão, retorne n * fatorial(n-1). O erro mais comum é esquecer o caso base — sem ele, a função nunca para de chamar a si mesma, resultando em recursão infinita e estouro de pilha (RecursionError). É obrigatório tratar n == 0 explicitamente no código, pois do contrário a condição de parada nunca é atingida. Como loops são proibidos, a recursão é o único mecanismo de repetição disponível. Lembre-se de que fatorial(0) deve retornar 1 para que a recursão funcione corretamente.
RESOLUÇÃO