Je suis en train de réécrire du code existant dans un contexte où les appels récursifs ne sont pas facilement implémentés ni souhaités. (Et dans Fortran 77, si vous devez le savoir.) J'ai pensé à créer une pile à partir de zéro pour garder une trace des appels nécessaires, mais cela semble kludgy, et je préfère ne pas allouer de mémoire à un tableau dans les cas où la récursivité n'est pas profonde. (Je ne suis pas sûr que Fortran 77 supporte le dimensionnement dynamique des tableaux non plus.)Réécriture d'une fonction récursive sans utiliser la récursivité
D'autres suggestions pour une solution générale sur la façon de prendre une fonction évidemment récursive et de la réécrire de façon non récursive sans gaspiller d'espace sur une pile?
Un grand merci, Old MCST
S'il ne se branche pas, vous pouvez généralement le réécrire en une simple boucle. Si elle se branche vous avez généralement besoin d'une pile – CodesInChaos
@CodeInChaos: une fonction récursive qui ne branche pas, par définition, ne reviendra jamais ... –
Devinez que j'ai mal utilisé le mot branche. Je veux dire appel lui-même plusieurs fois, de sorte que le graphique des appels devient un arbre avec des branches. Et ce n'est que mon expérience et pas toujours vrai. – CodesInChaos