J'ai vu partout débordement de pile, par exemple ici , ici , ici , ici , ici et quelques autres que je me fiche de mentionner, que "tout programme qui utilise la récursion peut être converti en un programme utilisant uniquement l'itération".
Il y avait même un fil de discussion très élevé avec une réponse très positive qui disait oui, c'est possible.
Maintenant, je ne dis pas qu'ils ont tort. C'est juste que cette réponse contredit mes maigres connaissances et ma compréhension de l'informatique.
Je crois que chaque fonction itérative peut être exprimée en tant que récursivité, et Wikipedia a une déclaration à cet effet. Cependant, je doute que l'inverse soit vrai. D'une part, je doute que les fonctions récursives non primitives puissent être exprimées de manière itérative.
Je doute aussi que les hyper-opérations puissent être exprimées de manière itérative.
Dans sa réponse (que je ne comprends pas, par ailleurs) à ma question, @YuvalFIlmus a déclaré qu'il n'était pas possible de convertir une séquence d'opérations mathématiques en une séquence d'ajouts.
Si la réponse de YF est effectivement correcte (je suppose que oui, mais son raisonnement était au-dessus de ma tête), cela ne signifie-t-il pas que toutes les récursions ne peuvent pas être converties en itération? Parce que s'il était possible de convertir chaque récursivité en itération, je serais capable d'exprimer toutes les opérations sous forme d'une séquence d'ajouts.
Ma question est la suivante:
Chaque récursivité peut-elle être convertie en itération et pourquoi?
Veuillez donner une réponse à un brillant lycéen ou à un étudiant de première année comprendra. Merci.
PS Je ne sais pas ce qu'est la primitive récursive (je connais la fonction Ackermann, et ce n'est pas une récursive primitive, mais elle est toujours calculable. Toutes mes connaissances à ce sujet proviennent de la page Wikipedia sur la fonction Ackermann.)
PPS: Si la réponse est oui, pourriez-vous par exemple écrire une version itérative d'une fonction non primitive-récursive. Par exemple Ackermann dans la réponse. Ça m'aidera à comprendre.