Différence entre récursivité et itération
La récursivité et l’itération exécutent plusieurs fois un ensemble d’instructions. La récursivité se produit lorsqu’une instruction dans une fonction s’appelle elle-même plusieurs fois. L’itération est quand une boucle s’exécute de façon répétée jusqu’à ce que la condition de contrôle devienne fausse. La principale différence entre récursion et itération est que la récursivité est un processus, toujours appliqué à une fonction. L’itération est appliquée à l’ensemble des instructions que nous voulons exécuter de façon répétitive.
Table de comparaison
Récursivité | Itération | |
---|---|---|
Signification | La fonction appelle elle-même. | Permet d’exécuter plusieurs fois l’ensemble des instructions. |
Format | Dans une fonction récursive, seule la condition de terminaison est spécifiée. | L’itération comprend l’initialisation, la condition, l’exécution de l’instruction dans une boucle et la mise à jour (incrémenter et décrémenter) la variable de contrôle. |
Terminaison | Une instruction conditionnelle est incluse dans le corps de la fonction pour forcer la fonction à retourner sans que l’appel de récurrence soit exécuté. | L’instruction d’itération est exécutée plusieurs fois jusqu’à ce qu’une certaine condition soit atteinte. |
Condition | Si la fonction ne converge pas vers une condition appelée (cas de base), elle conduit à une récursion infinie. | Si la condition de contrôle dans l’instruction d’itération ne devient jamais fausse, elle conduit à une itération infinie. |
Répétition infinie | Une récursion infinie peut bloquer le système. | Une boucle infinie utilise les cycles du processeur de manière répétée. |
Application | La récursivité est toujours appliquée aux fonctions. | L’itération est appliquée aux instructions d’itération « ex : des boucles ». |
Pile | La pile est utilisée pour stocker l’ensemble des nouvelles variables et paramètres locaux chaque fois que la fonction est appelée. | N’utilise pas la pile. |
La vitesse | Lent | Rapide |
Taille du code | La récursivité réduit la taille du code. | L’itération rend le code plus long. |
Programme factoriel en utilisant la récursivité
int calfactorial(int n) { /* Condition de base */ if(n==1) return 1; else /* Appel récursif */ return (n * calfactorial(n-1) ); }
Programme factoriel en utilisant la méthode itérative
int calfactorial (int n) { int fac = 1; for (int i = 2; i <= n; i++){ fac = fac * i; } return fac; }