SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Algorithmique
&
structures des données II
1ère Business Computing (BC)
Responsable : Dr. Fadoua Bouafif
1
Dr. Fadoua.BOUAFIF
Chapitre 2
La récursivité
2
Dr. Fadoua.BOUAFIF
Objectif du chapitre
3
Dr. Fadoua.BOUAFIF
A la fin du chapitre, les étudiants seront en mesure
de définir une fonction récursive afin de facilité la
manipulation d’un problème donné
Plan du chapitre
1. Introduction
2. Exemple introductive
3. Définitions
4. Avantages et inconvénients
5. Types de récursivité
6. Exercice d’application
7. Conclusion
2
Dr. Fadoua.BOUAFIF 4
Introduction
Dans la résolution d'un problème, ilarrive parfoisde répéter la même action.
Deux méthodes : la méthode itérative et la méthode récursive.
3
La méthode récursive est construite autour
d'une même fonction qui s'auto-appelle
jusqu'à atteindre la solution finale.
La méthode itérative se base sur la notion de boucles:
une même action est répétée un nombre fini de fois
(Pour/Répéter..jusqu’à/Tantque…faire,for/do…While/while).
La récursivité est donc une autre manière d’écrire des boucles sans l’utilisation
des structures de contrôle répétitives
Dr. Fadoua.BOUAFIF 5
8
Exemple introductive
Exemple: calculer le factoriel d’un entier n positif.
Principe :
On sait que:
n! = n*(n-1)*(n-2)*….*1
n!=n*(n-1)!
(n-1)! = (n-1)*(n-2)!
…
0! =1 // condition d'arrêt
Méthode itérative Méthoderécursive
Dr. Fadoua.BOUAFIF 6
Exemple introductive
En algorithmique
Fonction fact(n:entier):entier
var f:entier
Debut
f1
tantque (n>0) faire
ff*n
nn-1
fintanque
retourne(f)
Fin
Méthode itérative Méthode récursive
fonction fact(n : entier ) : entier
debut
si (n == 0) alors // condition d'arrêt
retourne (1)
sinon
retourne (n × fact(n − 1)) // appel récursif
fin si
fin
Dr. Fadoua.BOUAFIF 7
ASDII
Exemple introductive
En C
int fact(int n )
{
int f;
f=1;
while (n>0)
{
f=f*n;
n=n-1;
}
return(f);
}
Méthode itérative Méthode récursive
int fact(int n)
{
if (n ==0) // condition d'arrêt
return(1);
else
return (n× fact(n −1)); // appelrécursif
}
Dr. Fadoua.BOUAFIF 8
Calculer 3! Fact (3)
{
if (3==0) return 1;
return (3*Fact(2));
}
Fact (2)
{
if (2==0) return 1;
return (2*Fact (1));
}
Fact (1)
{
if (1==0) return 1;
return (1*Fact (0)));
}
1*1=1
2*1= 2
3*2=6
1
0! :Estla condition
d’arrêt pour la série
des auto appels.
Illustration de l’exemple
Dr. Fadoua.BOUAFIF 9
Définitions
La récursivité se définit,dans leslangages de programmations, par:
des fonctions récursives
ou des procéduresrécursives.
Un sous-programmeest dit récursif,s’il contient au moins un énoncé d'appel, direct ou
indirect, à lui-même dans son corps.
Tout processus récursif peut être exprimé par son équivalent itératif l'inverse n'est pas
toujoursvalable.
La récursivité est trèsutilisée dans la programmation dynamique (listes,arbres, graphe, etc.).
4
Dr. Fadoua.BOUAFIF 10
Avantages et inconvénients
Avantages Inconvénients
Simplifier l'écriture des programmes, puisque
les calculs à effectuer ne sont pas définis
explicitement.
Faciliter la tâche au programmeur, qui
n'aura plus à préciser le nombre de répétition
de la même action, ni à gérer les différentes
valeurs des variables utilisées.
Exiger un grand espace mémoire lors
de l'exécution
Générer une infinité d'appels lorsque la
condition d'arrêt n'est pas atteinte.
5
Dr. Fadoua.BOUAFIF 11
Types de récursivité
La récursivité peut être:
6
Directe (Simple) Indirecte
Dr. Fadoua.BOUAFIF 12
Simple ou Rapide ou directe:le sous-programme s'appelle lui-même
Syntaxe:
7
La récursivité Directe (Simple)
Sous-programme P1
debut
…..
… ..
appel de P1
fin
Dr. Fadoua.BOUAFIF 13
8
La récursivité Directe (exemple)
Exemple: écrire un sous-programme récursif qui permet de calculer le carré d’un entier n positif.
Principe :
On sait que: (n+1)2 = n2 +2n +1
sionremplacenparn-1n2 =(n-1)2 +2(n-1)+1=(n-1)2 +2n-1
donc
carrer(n)=carrer(n-1)+2n-1
D’oùsin=0alorscarrer(n)=0 conditiond’arret
Dr. Fadoua.BOUAFIF 14
La récursivité Directe (exemple)
Dr. Fadoua.BOUAFIF 15
Croisée ou indirecte :deux sousprogrammes s'appellent l'unl'autre.
Le premier appelle le second,
Le second appelle le premier,
etc.
Syntaxe:
Sous-programme P1
debut
…..
…..
appel deP2
fin
11
La récursivité Indirecte
Sous-programme P2
debut
…..
…..
appel deP1
fin
Dr. Fadoua.BOUAFIF 16
En algorithme
fonction pair (n:entier ):booleen
debut
si(n==0)alors // condition d'arrêt
retourne(vrai)
sinon retourne (impair (n−1))
fin si
fin
fonction impair (n:entier ):booleen
debut
si(n==0)alors // condition d'arrêt
retourne (faux)
sinon retourne (pair (n−1))
finsi
fin
EN C
int pair (intn)
{
if (n==0) // conditiond'arrêt
return 1;
else return(impair (n-1));
}
int impair (intn)
{
if (n==0)// conditiond'arrêt
return 0;
else return(pair (n-1));
}
12
La récursivité Indirecte (exemple)
Exemple: écrire un sous-programme récursif qui permet d’envoyer la parité d’un entier n positif.
Principe: Un nombre n peut-être soit pair :n =2*k soit impair :n =2*k+1
17
Exercice d’application
Écrire un sous-programme récursif en C qui testesiun mot estun palindrome.
Un mot palindrome qui se lit de droite à gauche ou de gauche à droite exp: radar
Solution:
Condition d’arrêt: debut >= fin la chaine est palindrome
Appel récursive:
chaine [debut]!=chaine[fin] la chaine n’est pas palindrome
chaine[debut] =
=chaine[fin]
palindrome (chaine, debut++,fin--)
Dr. Fadoua.BOUAFIF 18
Exercice d’application (correction )
}
Dr. Fadoua.BOUAFIF 19
Conclusion
Pour réussir un sous-programme récursif, ilest nécessaire de biendéfinir
la condition d'arrêt du sous-programme.
Tout sou-programme récursif peut être transcrit en un sous-
programme itératif. l'inverse n'est pas toujours valable.
13
Dr. Fadoua.BOUAFIF 20

Contenu connexe

Tendances

Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfFadouaBouafifSamoud
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmiquenicodeff
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptxPROFPROF11
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numériqueMariem ZAOUALI
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxHathat10
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en pythonMariem ZAOUALI
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
 

Tendances (20)

Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdf
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numérique
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptx
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
TP C++ : enoncé
TP C++ : enoncéTP C++ : enoncé
TP C++ : enoncé
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er année
 

Similaire à Ch2_ la récursivité.pdf

chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdfdonixwm
 
rc.pdf
rc.pdfrc.pdf
rc.pdfDOUA9
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfFadouaBouafifSamoud
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAmelianikholoud
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de triYassine Anddam
 
Chapitre 7procédure et fonction
Chapitre 7procédure et fonctionChapitre 7procédure et fonction
Chapitre 7procédure et fonctionMatisi Mansour
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R SumAmy Isleb
 
Logique floue application
Logique floue application Logique floue application
Logique floue application Arrow Arrow
 
Les fonction recursives en Programation C.pptx
Les fonction recursives en Programation C.pptxLes fonction recursives en Programation C.pptx
Les fonction recursives en Programation C.pptxAgnawpin
 

Similaire à Ch2_ la récursivité.pdf (11)

chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
Récursivité
RécursivitéRécursivité
Récursivité
 
rc.pdf
rc.pdfrc.pdf
rc.pdf
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdf
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
ch6 les sous programmes.pdf
ch6 les sous programmes.pdfch6 les sous programmes.pdf
ch6 les sous programmes.pdf
 
Chapitre 7procédure et fonction
Chapitre 7procédure et fonctionChapitre 7procédure et fonction
Chapitre 7procédure et fonction
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
 
Logique floue application
Logique floue application Logique floue application
Logique floue application
 
Les fonction recursives en Programation C.pptx
Les fonction recursives en Programation C.pptxLes fonction recursives en Programation C.pptx
Les fonction recursives en Programation C.pptx
 

Plus de FadouaBouafifSamoud

Plus de FadouaBouafifSamoud (6)

Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdf
 
ch4_les listes.pdf
ch4_les listes.pdfch4_les listes.pdf
ch4_les listes.pdf
 
ch3_les variables_dynamiques.pdf
ch3_les variables_dynamiques.pdfch3_les variables_dynamiques.pdf
ch3_les variables_dynamiques.pdf
 
Ch1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdfCh1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdf
 

Dernier

systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 

Dernier (15)

systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 

Ch2_ la récursivité.pdf

  • 1. Algorithmique & structures des données II 1ère Business Computing (BC) Responsable : Dr. Fadoua Bouafif 1 Dr. Fadoua.BOUAFIF
  • 3. Objectif du chapitre 3 Dr. Fadoua.BOUAFIF A la fin du chapitre, les étudiants seront en mesure de définir une fonction récursive afin de facilité la manipulation d’un problème donné
  • 4. Plan du chapitre 1. Introduction 2. Exemple introductive 3. Définitions 4. Avantages et inconvénients 5. Types de récursivité 6. Exercice d’application 7. Conclusion 2 Dr. Fadoua.BOUAFIF 4
  • 5. Introduction Dans la résolution d'un problème, ilarrive parfoisde répéter la même action. Deux méthodes : la méthode itérative et la méthode récursive. 3 La méthode récursive est construite autour d'une même fonction qui s'auto-appelle jusqu'à atteindre la solution finale. La méthode itérative se base sur la notion de boucles: une même action est répétée un nombre fini de fois (Pour/Répéter..jusqu’à/Tantque…faire,for/do…While/while). La récursivité est donc une autre manière d’écrire des boucles sans l’utilisation des structures de contrôle répétitives Dr. Fadoua.BOUAFIF 5
  • 6. 8 Exemple introductive Exemple: calculer le factoriel d’un entier n positif. Principe : On sait que: n! = n*(n-1)*(n-2)*….*1 n!=n*(n-1)! (n-1)! = (n-1)*(n-2)! … 0! =1 // condition d'arrêt Méthode itérative Méthoderécursive Dr. Fadoua.BOUAFIF 6
  • 7. Exemple introductive En algorithmique Fonction fact(n:entier):entier var f:entier Debut f1 tantque (n>0) faire ff*n nn-1 fintanque retourne(f) Fin Méthode itérative Méthode récursive fonction fact(n : entier ) : entier debut si (n == 0) alors // condition d'arrêt retourne (1) sinon retourne (n × fact(n − 1)) // appel récursif fin si fin Dr. Fadoua.BOUAFIF 7
  • 8. ASDII Exemple introductive En C int fact(int n ) { int f; f=1; while (n>0) { f=f*n; n=n-1; } return(f); } Méthode itérative Méthode récursive int fact(int n) { if (n ==0) // condition d'arrêt return(1); else return (n× fact(n −1)); // appelrécursif } Dr. Fadoua.BOUAFIF 8
  • 9. Calculer 3! Fact (3) { if (3==0) return 1; return (3*Fact(2)); } Fact (2) { if (2==0) return 1; return (2*Fact (1)); } Fact (1) { if (1==0) return 1; return (1*Fact (0))); } 1*1=1 2*1= 2 3*2=6 1 0! :Estla condition d’arrêt pour la série des auto appels. Illustration de l’exemple Dr. Fadoua.BOUAFIF 9
  • 10. Définitions La récursivité se définit,dans leslangages de programmations, par: des fonctions récursives ou des procéduresrécursives. Un sous-programmeest dit récursif,s’il contient au moins un énoncé d'appel, direct ou indirect, à lui-même dans son corps. Tout processus récursif peut être exprimé par son équivalent itératif l'inverse n'est pas toujoursvalable. La récursivité est trèsutilisée dans la programmation dynamique (listes,arbres, graphe, etc.). 4 Dr. Fadoua.BOUAFIF 10
  • 11. Avantages et inconvénients Avantages Inconvénients Simplifier l'écriture des programmes, puisque les calculs à effectuer ne sont pas définis explicitement. Faciliter la tâche au programmeur, qui n'aura plus à préciser le nombre de répétition de la même action, ni à gérer les différentes valeurs des variables utilisées. Exiger un grand espace mémoire lors de l'exécution Générer une infinité d'appels lorsque la condition d'arrêt n'est pas atteinte. 5 Dr. Fadoua.BOUAFIF 11
  • 12. Types de récursivité La récursivité peut être: 6 Directe (Simple) Indirecte Dr. Fadoua.BOUAFIF 12
  • 13. Simple ou Rapide ou directe:le sous-programme s'appelle lui-même Syntaxe: 7 La récursivité Directe (Simple) Sous-programme P1 debut ….. … .. appel de P1 fin Dr. Fadoua.BOUAFIF 13
  • 14. 8 La récursivité Directe (exemple) Exemple: écrire un sous-programme récursif qui permet de calculer le carré d’un entier n positif. Principe : On sait que: (n+1)2 = n2 +2n +1 sionremplacenparn-1n2 =(n-1)2 +2(n-1)+1=(n-1)2 +2n-1 donc carrer(n)=carrer(n-1)+2n-1 D’oùsin=0alorscarrer(n)=0 conditiond’arret Dr. Fadoua.BOUAFIF 14
  • 15. La récursivité Directe (exemple) Dr. Fadoua.BOUAFIF 15
  • 16. Croisée ou indirecte :deux sousprogrammes s'appellent l'unl'autre. Le premier appelle le second, Le second appelle le premier, etc. Syntaxe: Sous-programme P1 debut ….. ….. appel deP2 fin 11 La récursivité Indirecte Sous-programme P2 debut ….. ….. appel deP1 fin Dr. Fadoua.BOUAFIF 16
  • 17. En algorithme fonction pair (n:entier ):booleen debut si(n==0)alors // condition d'arrêt retourne(vrai) sinon retourne (impair (n−1)) fin si fin fonction impair (n:entier ):booleen debut si(n==0)alors // condition d'arrêt retourne (faux) sinon retourne (pair (n−1)) finsi fin EN C int pair (intn) { if (n==0) // conditiond'arrêt return 1; else return(impair (n-1)); } int impair (intn) { if (n==0)// conditiond'arrêt return 0; else return(pair (n-1)); } 12 La récursivité Indirecte (exemple) Exemple: écrire un sous-programme récursif qui permet d’envoyer la parité d’un entier n positif. Principe: Un nombre n peut-être soit pair :n =2*k soit impair :n =2*k+1 17
  • 18. Exercice d’application Écrire un sous-programme récursif en C qui testesiun mot estun palindrome. Un mot palindrome qui se lit de droite à gauche ou de gauche à droite exp: radar Solution: Condition d’arrêt: debut >= fin la chaine est palindrome Appel récursive: chaine [debut]!=chaine[fin] la chaine n’est pas palindrome chaine[debut] = =chaine[fin] palindrome (chaine, debut++,fin--) Dr. Fadoua.BOUAFIF 18
  • 19. Exercice d’application (correction ) } Dr. Fadoua.BOUAFIF 19
  • 20. Conclusion Pour réussir un sous-programme récursif, ilest nécessaire de biendéfinir la condition d'arrêt du sous-programme. Tout sou-programme récursif peut être transcrit en un sous- programme itératif. l'inverse n'est pas toujours valable. 13 Dr. Fadoua.BOUAFIF 20