Académique Documents
Professionnel Documents
Culture Documents
Plan du Cours
Notion de récursivité
La récursivité est une technique de programmation alternatives à
• La récursivité l’itération qui permet de trouver, lorsqu’elle est bien utilisée, des
solutions très élégantes à un certain nombre de problèmes.
• Les enregistrements
Une procédure ou fonction est dite récursive si son corps contient
• Les pointeurs un ou plusieurs appels à elle-même:
page 1 ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 2 Enseignant : Soufien GDAIM
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 3 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 4 Enseignant : Soufien GDAIM
La récursivité : exemple 1 : Somme La récursivité : exemple 2 : Factorielle
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 5 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 6 Enseignant : Soufien GDAIM
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 7 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 8 Enseignant : Soufien GDAIM
Les types de récursivité Les types de récursivité
1 si p 0 ou p n
Cnp p p 1
n 1 si m 0
Cn 1 Cn 1 sin on
A(m, n) A(m 1,1) si m 0 et n 0
A(m 1, A(m, n 1)) sin on
Donner son code
Donner son code
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 9 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 10 Enseignant : Soufien GDAIM
Récursivité mutuelle (croisée) Exemple 2 : soient les deux suites récurrentes suivantes :
Des définitions sont dites mutuellement récursives si elles
dépendent les unes des autres. U0= -1 V0= 1
Exemple : Ça peut être le cas pour la définition de la parité : Un=2 * Vn + 5 Vn=2 * Un-1 + 3
vrai si n 0 Ecrire deux fonctions récursives qui permettent de définir les deux suites
pair (n) U et V
impair (n 1) sin on
faux si n 0
impair (n)
pair (n 1) sin on
Donner leurs codes
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 11 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 12 Enseignant : Soufien GDAIM
La récursivité La récursivité
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 13 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 14 Enseignant : Soufien GDAIM
La récursivité La récursivité
La récursivité La récursivité
(n=2)
G(auche) M(ilieu) D(roite)
(n=1)
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 19 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 20 Enseignant : Soufien GDAIM
La récursivité La récursivité
(n=2) (n=2)
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 21 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 22 Enseignant : Soufien GDAIM
La récursivité La récursivité
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 23 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 24 Enseignant : Soufien GDAIM
La récursivité La récursivité
(n=3) (n=3)
Récurrence : Récurrence :
Hypothèse: on connaît la solution pour n-1 disques Hypothèse: on connaît la solution pour n-1 disques
Trouver la solution pour n disques Trouver la solution pour n disques
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 25 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 26 Enseignant : Soufien GDAIM
La récursivité La récursivité
(n=3) (n=3)
Récurrence : Récurrence :
Hypothèse: on connaît la solution pour n-1 disques Hypothèse: on connaît la solution pour n-1 disques
Trouver la solution pour n disques Trouver la solution pour n disques
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 27 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 28 Enseignant : Soufien GDAIM
La récursivité La récursivité
(n=3) (n=3)
Récurrence : Récurrence :
Hypothèse: on connaît la solution pour n-1 disques Hypothèse: on connaît la solution pour n-1 disques
Trouver la solution pour n disques Trouver la solution pour n disques
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 29 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 30 Enseignant : Soufien GDAIM
La récursivité La récursivité
n-1 3(hypo)
1(hypo)
n 2
Module récursive
procedure deplacer ( n:entier; G, M, D:caratere)
debut
si(n=1) //cas de base
ecrire ( "déplacer le disque de G vers D " ); Module récursive
sinon //récursivité
deplacer(n-1, G, D, M);
deplacer(1, G, M, D);
deplacer(n-1, M, G, D);
Finsi.
Module récursive
Module récursive
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 33 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 34 Enseignant : Soufien GDAIM
La récursivité La récursivité
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 35 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 36 Enseignant : Soufien GDAIM
Exercices La somme des n premiers entiers
Exercices
Som(n) calcule la somme des n premiers naturels Itératif : Som (n) = 0+ 1 + 2 + ... + n Récursif : Som(0)=0
Som(a,b) calcule la somme des entiers a et b Som (n) = n + Som (n-1)
Prod(a,b) calcule le produit des entiers a et b Som(n: entier): entier Som(n: entier): entier
Puiss(a,b) calcule a puissance b Début Début
S0; Si n = 0 alors
Pouri de 1 à n faire retourner(0)
SS+i; Sinon
retourner S; retourner (Som(n-1) +n)
Fin Fin
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 37 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 38 Enseignant : Soufien GDAIM
1ère solution: a+0=a 2ème solution: 0+b=b 1ère solution: a*b = a*(b-1)+a 2ème solution: a*b = (a-1)*b+b
a+b = a+(b-1)+1 a+b = (a-1)+b+1
Som(a,b: entier): entier Som(a,b: entier): entier Prod(a,b: entier): entier Prod(a,b: entier): entier
Début Début Début Début
Si b = 0 alors Si a = 0 alors Si a = 0 ou b = 0 alors Si a = 0 ou b = 0 alors
retourner(a) retourner(b) retourner(0) retourner(0)
Sinon Sinon Sinon Sinon
retourner (Som(a, b-1) +1) retourner (Som(a-1, b) +1) retourner (Prod(a, b-1) +a) retourner (Prod(a-1, b) +b)
Fin Fin Fin Fin
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 39 Enseignant : Soufien GDAIM ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 40 Enseignant : Soufien GDAIM
La puissance ab (a et b deux entiers positifs)
ISIMA 2019-2020 - LBC1-LCE1- Algorithmique et structure de données II page 41 Enseignant : Soufien GDAIM