Euh.. le but était d'exprimer la même chose dans un autre paradigme donc c'est normal que ce soit différent. Dans les codes que j'ai proposés, je n'utilise pas de "mutable cells" (de variables qui varient) ce qui simplifie beaucoup (normalement) la compréhension du code : dans un contexte donné, une variable a toujours la même valeur.
Ensuite ma fonction est récursive terminale (tu peux t'en assurer en ajoutant l'annotation @tailrec, qui se trouve dans le package scala.annotation, au dessus de la définition) donc n'importe quel compilateur digne de ce nom va transformer l'appel récursif en boucle/goto/etc. Donc aucun problème avec la pile d'appel.
[^] # Re: Programmation impérative...
Posté par hsyl20 (site web personnel) . En réponse au journal Psychology of programming. Évalué à 5.
Ensuite ma fonction est récursive terminale (tu peux t'en assurer en ajoutant l'annotation @tailrec, qui se trouve dans le package scala.annotation, au dessus de la définition) donc n'importe quel compilateur digne de ce nom va transformer l'appel récursif en boucle/goto/etc. Donc aucun problème avec la pile d'appel.