La récursivité et l'itération peuvent être utilisées pour résoudre des problèmes de programmation. L’approche pour résoudre le problème en utilisant la récursivité ou l’itération dépend de la façon de résoudre le problème. le différence clé entre récursion et itération est que La récursivité est un mécanisme permettant d'appeler une fonction dans la même fonction, tandis que l'itération consiste à exécuter un ensemble d'instructions de manière répétée jusqu'à ce que la condition donnée soit vraie.. La récursivité et l'itération sont des techniques majeures pour le développement d'algorithmes et la construction d'applications logicielles.
1. Vue d'ensemble et différence clé
2. Quelle est la récursion
3. Quelle est l'itération
4. Similitudes entre la récursivité et l'itération
5. Comparaison côte à côte - Récursion vs Itération sous forme tabulaire
6. Résumé
Quand une fonction s’appelle dans la fonction, elle est appelée récursivité. Il existe deux types de récursivité. Ils sont récursion finie et récursion infinie. Récursion finie a une condition de terminaison. Récursion infinie n'a pas de condition finale.
La récursivité peut être expliquée à l'aide du programme permettant de calculer des factorielles.
n! = n * (n-1) !, si n> 0
n! = 1 si n = 0;
Reportez-vous au code ci-dessous pour calculer la factorielle de 3 (3! = 3 * 2 * 1).
int main ()
int = factorielle (3);
printf (“Factorial is% d \ n”, valeur);
retourne 0;
intfactorial (intn)
si (n == 0)
retourne 1;
autre
retourne n * factorielle (n-1);
Lorsque vous appelez factorielle (3), cette fonction appellera factorielle (2). Lorsque vous appelez factorielle (2), cette fonction appellera factorielle (1). Ensuite factoriel (1) appellera factorial (0). factorielle (0) retournera 1. Dans le programme ci-dessus, la condition n == 0 dans «if block» est la condition de base. De même, la fonction factorielle est appelée encore et encore.
Les fonctions récursives sont liées à la pile. En C, le programme principal peut avoir de nombreuses fonctions. Donc, main () est la fonction appelante, et la fonction appelée par le programme principal est la fonction appelée. Lorsque la fonction est appelée, le contrôle est donné à la fonction appelée. Une fois l'exécution de la fonction terminée, le contrôle est renvoyé à main. Ensuite, le programme principal continue. Donc, il crée un enregistrement d'activation ou un cadre de pile pour continuer l'exécution.
Figure 01: Récursion
Dans le programme ci-dessus, lorsqu’il appelle factorial (3) depuis main, il crée un enregistrement d’activation dans la pile d’appels. Ensuite, un cadre de pile factoriel (2) est créé en haut de la pile, etc. L'enregistrement d'activation conserve des informations sur les variables locales, etc. Chaque fois que la fonction est appelée, un nouvel ensemble de variables locales est créé en haut de la pile. Ces cadres de pile peuvent ralentir la vitesse. De même en récursion, une fonction s’appelle elle-même. La complexité temporelle d'une fonction récursive est déterminée par le nombre de fois où la fonction est appelée. La complexité temporelle d'un appel de fonction est O (1). Pour n nombre d'appels récursifs, la complexité temporelle est O (n).
L'itération est un bloc d'instructions qui se répète encore et encore jusqu'à ce que la condition donnée soit vraie. L'itération peut être réalisée en utilisant «for loop», «do-while loop» ou «while loop». La syntaxe “for loop” est la suivante.
pour (initialisation; condition; modifier)
// déclarations;
Figure 02: «diagramme de flux de boucle»
L'étape d'initialisation s'exécute en premier. Cette étape consiste à déclarer et à initialiser les variables de contrôle de boucle. Si la condition est vraie, les instructions à l'intérieur des accolades sont exécutées. Ces déclarations sont exécutées jusqu'à ce que la condition soit vraie. Si la condition est fausse, le contrôle passe à l'instruction suivante après la boucle «for». Après avoir exécuté les instructions à l'intérieur de la boucle, le contrôle va modifier la section. C'est pour mettre à jour la variable de contrôle de boucle. Ensuite, la condition est vérifiée à nouveau. Si la condition est vraie, les instructions à l'intérieur des accolades seront exécutées. De cette façon, la "boucle" itère.
En “boucle en boucle”, les instructions à l'intérieur de la boucle s'exécutent jusqu'à ce que la condition soit vraie.
while (condition)
// déclarations
En boucle "do-while", la condition est vérifiée à la fin de la boucle. Ainsi, la boucle s'exécute au moins une fois.
faire
// déclarations
tant que (condition)
Programme pour trouver la factorielle de 3 (3!) En utilisant l'itération ("pour la boucle") est la suivante.
int main()
intn = 3, factorielle = 1;
inti;
pour (i = 1; i<=n ; i++)
factorielle = factorielle * i;
printf (“Factorial is% d \ n”, factoriel);
retourne 0;
Récursion vs Itération | |
La récursivité est une méthode permettant d’appeler une fonction dans la même fonction.. | L'itération est un bloc d'instructions qui se répète jusqu'à ce que la condition donnée soit vraie. |
La complexité de l'espace | |
La complexité spatiale des programmes récursifs est supérieure aux itérations. | La complexité de l'espace est plus faible dans les itérations. |
La vitesse | |
L'exécution de la récursivité est lente. | Normalement, l'itération est plus rapide que la récursivité. |
État | |
S'il n'y a pas de condition de terminaison, il peut y avoir une récursion infinie. | Si la condition ne devient jamais fausse, ce sera une itération infinie. |
Empiler | |
En récursion, la pile est utilisée pour stocker les variables locales lorsque la fonction est appelée. | Dans une itération, la pile n'est pas utilisée. |
Lisibilité du code | |
Un programme récursif est plus lisible. | Le programme itératif est plus difficile à lire qu'un programme récursif. |
Cet article a discuté de la différence entre la récursivité et l'itération. Les deux peuvent être utilisés pour résoudre des problèmes de programmation. La différence entre récursivité et itération réside dans le fait que la récursivité est un mécanisme permettant d'appeler une fonction dans la même fonction et de l'itérer pour exécuter un ensemble d'instructions à plusieurs reprises jusqu'à ce que la condition donnée soit vraie. Si un problème peut être résolu sous forme récursive, il peut également être résolu en utilisant des itérations.
Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne, conformément à la note de citation. Veuillez télécharger la version PDF ici Différence entre récursivité et itération
1.Point, tutoriels. «Notions de base sur la récursion des structures de données et des algorithmes»., Tutoriels Point, 15 août 2017. Disponible ici
2.nareshtechnologies. “Récursion dans les fonctions C | Tutoriel en langage C ”YouTube, YouTube, 12 septembre 2016. Disponible ici
3.yusuf shakeel. “Algorithme de récursivité | Factorial - guide étape par étape ”YouTube, YouTube, 14 octobre 2013. Disponible ici
1.'CPT-Recursion-Factorial-Code'By Pluke - Travail personnel, (Domaine public) via Wikimedia Commons
2. 'For-loop-diagram'By Aucun auteur lisible par machine n'a été fourni - Propre travail supposé. (CC BY-SA 2.5) via Wikimedia Commons