Recursão, call stack e quando ela vira problema
Pergunta
O que acontece na call stack quando uma função recursiva executa, e em que situações a recursão vira um problema prático?
Resposta esperada
Cada chamada recursiva empilha um frame na call stack (parâmetros, variáveis locais, endereço de retorno). A pilha só desempilha quando a chamada retorna. Problemas: (1) profundidade grande estoura a pilha (stack overflow) — recursão linear sobre uma lista de 100 mil itens quebra em muitas linguagens; (2) recálculo exponencial quando subproblemas se repetem (fibonacci ingênuo é O(2ⁿ)), resolvido com memoização ou versão iterativa; (3) overhead de chamada vs. um loop. Linguagens com tail-call optimization mitigam (1), mas JS e Python na prática não otimizam tail calls, então recursão profunda deve virar iteração com pilha explícita.
Por que perguntam isso
Testa se o candidato entende o custo real da recursão, não só a elegância. Resposta forte cita stack overflow com um número e sabe que JS/Python não fazem TCO.