Quels sont les avantages de la récursion?
Certaines langues de programmation peuvent optimiser la récursion de la queue, mais, toujours en termes généraux, la récursivité consomme plus de ressources que les boucles régulières.
Est-il possible d'avoir une version itérative de certaines fonctions récursives?
Oui, vous pouvez coder les fonctions récursives comme itérations. Il vous oblige essentiellement à conserver les informations manuellement qu'autrement aurait été prise en charge par la méthode appelant le code généré par le compilateur.
En d'autres termes, vous avez besoin d'une pile où chaque entrée est une structure contenant les paramètres transcédés et toutes les variables locales. Vous travaillez toujours sur la plus grande entrée sur la pile. Si vous avez besoin de vous appeler vous-même, créez une nouvelle entrée et mettez en haut de la pile. Une fois terminé, prenez la plus haute entrée de la pile exposant celle ci-dessous et utilisez l'entrée précédemment la plus haute pour extraire les valeurs de retour et mettre à jour la nouvelle entrée la plus haute en conséquence.
Je vous suggère d'étudier un livre de compilateur pour voir comment cela est habituellement implémenté dans le code de la machine.
Je crois que la récursivité est l'un de ces outils qu'un programmeur DOI doit vivre. Avec la récursion, vous pouvez "penser" vos algorithmes et les résoudre comme vous y pensez. Mais, je dois vous avertir, tout le monde parle de la jolie récursive et de la quantité de simplicité apporte au code, à ce que j'ai quelques choses à dire:
Avoir ces choses à l'esprit, apprendre la récursion! C'est drôle, complexe et cela écrasera votre cerveau!, mais vous vous retrouverez à aimer cela.
Bonne chance!