Je suis nouveau sur ce site et cette question n'est certainement pas au niveau de la recherche - mais bon. J'ai un peu d'expérience en génie logiciel et presque aucun en CSTheory, mais je le trouve attrayant. Pour faire une longue histoire, je voudrais une réponse plus détaillée à ce qui suit si cette question est acceptable sur ce site.
Donc, je sais que chaque programme récursif a un analogue itératif et je comprends en quelque sorte l'explication populaire qui lui est proposée en conservant quelque chose de similaire à la "pile système" et en poussant les paramètres d'environnement comme l'adresse de retour, etc. Je trouve ce type d'ondes manuelles .
Étant un peu plus concret, je voudrais (formellement) voir comment prouver cette affirmation dans les cas où vous avez une fonction invoquant la chaîne . De plus, que se passe-t-il s'il y a des instructions conditionnelles qui pourraient amener un appeler un certain ? C'est-à-dire que le graphe d'appel de fonction potentiel a des composants fortement connectés.F i F j
Je voudrais savoir comment ces situations peuvent être gérées par disons un convertisseur récursif en itératif. Et la description ondulée à laquelle j'ai fait référence plus haut est-elle vraiment suffisante pour ce problème? Je veux dire alors pourquoi est-ce que je trouve la suppression de la récursivité dans certains cas facile. En particulier, supprimer la récursivité de la traversée en pré-commande d'un arbre binaire est vraiment facile - c'est une question d'entretien standard, mais supprimer la récursivité en cas de post-commande a toujours été un cauchemar pour moi.
Ce que je demande vraiment, c'est questions
(1) Existe-t-il vraiment une preuve plus formelle (convaincante?) Que la récursivité peut être convertie en itération?
(2) Si cette théorie est vraiment là-bas, alors pourquoi est-ce que je trouve, par exemple, l' itération de la précommande plus facile et la post-commande si difficile? (autre que mon intelligence limitée)