J'ai trouvé un bouquin qui parle des méthodes que l'on peut utiliser pour supprimer la récursion d'une fonction. Il y a différentes méthodes qui produisent du code aussi rapide que de l'itératif, qui marchent dans un grand nombre de cas.
Titre : Spécifications algébriques, algorithmique et programmation
Auteurs : J.-F. Dufourd, D. Bechmann, Y. Bertrand
ISBN : 2 7296 0581 9
Date : 1995
Editions : InterEditions
À mon avis toutes ces méthodes sont implémentées dans le compilateur de OCaml, et il n'y a donc pas à avoir peur d'utiliser la récursivité en OCaml. Pour les plus maniaques de l'optimisation (dont je fais parti), ça peut vraiment aider à se déculpabiliser d'étudier les méthodes de dérécursivation

J'espère que ces méthodes sont aussi implantées dans GCC mais j'ai la flemme de faire des tests.