A recursão não é intrinsecamente melhor ou pior do que os loops - cada um tem vantagens e desvantagens, e até mesmo dependem da linguagem de programação (e implementação).
Tecnicamente, loops iterativos ajustam sistemas de computadores típicos melhor no nível de hardware: no nível de código de máquina, um loop é apenas um teste e um salto condicional, enquanto recursão (implementada ingenuamente) envolve empurrar um quadro de pilha, saltar, retornar, e voltando da pilha. OTOH, muitos casos de recursão (especialmente aqueles que são trivialmente equivalentes a loops iterativos) podem ser escritos para que o empilhamento / pop da pilha possa ser evitado; isso é possível quando a chamada de função recursiva é a última coisa que acontece no corpo da função antes de retornar, e é comumente conhecida como otimização da chamada final (ou otimização da recursão da cauda ) . Uma função recursiva otimizada de chamada de cauda é, na maioria das vezes, equivalente a um loop iterativo no nível de código da máquina.Outra consideração é que os loops iterativos requerem atualizações de estado destrutivas, o que as torna incompatíveis com a semântica de linguagem pura (sem efeitos colaterais). Esta é a razão pela qual linguagens puras como Haskell não possuem construções de loop, e muitas outras linguagens de programação funcional as faltam completamente ou as evitam o máximo possível.
O motivo pelo qual essas perguntas aparecem tanto em entrevistas, porém, é que, para respondê-las, você precisa de um conhecimento profundo de muitos conceitos vitais de programação - variáveis, chamadas de função, escopo e, é claro, loops e recursão -, e você tem que trazer a flexibilidade mental para a mesa que permite abordar um problema a partir de dois ângulos radicalmente diferentes e mover-se entre diferentes manifestações do mesmo conceito.A experiência e a pesquisa sugerem que existe uma linha entre pessoas que têm a capacidade de entender variáveis, ponteiros e recursividade e aquelas que não têm. Quase tudo o mais em programação, incluindo frameworks, APIs, linguagens de programação e seus casos de ponta, pode ser adquirido através do estudo e da experiência, mas se você não for capaz de desenvolver uma intuição para esses três conceitos básicos, estará incapacitado para ser um programador. A tradução de um loop iterativo simples em uma versão recursiva é a maneira mais rápida de filtrar os não-programadores - até mesmo um programador bastante inexperiente pode fazer isso em 15 minutos, e é um problema muito agnóstico de linguagem, então o candidato pode escolher uma linguagem de sua escolha, em vez de tropeçar em idiossincrasias.
Se você fizer uma pergunta como essa em uma entrevista, isso é um bom sinal: significa que o possível empregador está procurando pessoas que possam programar, e não pessoas que memorizaram o manual de uma ferramenta de programação.