La somme des entiers de 1 à 200 s'écrit de deux façons : par une fonction qui s'appelle elle-même, ou par une boucle.
Objectif
Calculer le résultat, puis ce que chaque version demande à la pile.
Les deux versions
int somme(int n) {
if (n == 0) return 0;
return n + somme(n - 1);
}
int somme(int n) {
int total = 0;
for (int i = 1; i <= n; i++) total = total + i;
return total;
}
Ce que cette comparaison n'épuise pas
La récursion reste le bon choix quand la structure parcourue se ramifie : un arbre, un dossier qui contient des dossiers, un tri qui coupe le problème en deux. Écrire ces cas par une boucle demande de gérer soi-même une pile de travail, c'est-à-dire de refaire à la main ce que la pile d'appels fait sans rien demander.