Recursão ou iteração?

Existe um problema de desempenho se usarmos loop em vez de recursão ou vice-versa em algoritmos em que ambos podem servir ao mesmo propósito? Por exemplo: verifique se a sequência fornecida é palíndromo. Eu já vi muitos programadores usando a recursão como um meio de mostrar quando um algoritmo de iteração simples pode ser adequado. O compilador desempenha um papel vital na decisão do que usar?