Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
STRUCTURES DE
DONNÉES
STRUCTURES DE
DONNÉES
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
STRUCTURES DE DONNÉES LINÉAIRES:
LA RÉCURSIVITÉ
STRUCTURES DE DONNÉES LINÉAIRES:
LA RÉCURSIVITÉ
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Plan de la leçonPlan de la leçon
Concept de la récursivité Concept de la récursivité
Récursivité : exemples Récursivité : exemples
Simulation de la récursivité Simulation de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Conceptde la récursivité
Conceptde la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
Une fonction récursive estune fonction qui s’appelleelle-même
Une fonction récursive estune fonction qui s’appelleelle-même
Le miroir vu dans le miroir Le miroir vu dans le miroir
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
Intérêt Intérêt Permet d’écrire des programmes
beaucoup plus lisibles Permet d’écrire des programmes
beaucoup plus lisibles Proche du formalisme de
récurrence en mathématique Proche du formalisme de
récurrence en mathématique Indispensable dans le traitement
des types récursifs Indispensable dans le traitement
des types récursifs Indispensable pour le principe
de diviser pour résoudre Indispensable pour le principe
de diviser pour résoudre
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
ExempleExemple
0! = 1! = 1n! = n*(n-1)! 0! = 1! = 1n! = n*(n-1)!
Calcul de la factorielleCalcul de la factorielle
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
Version itérative Version itérative
Par accumulation du produitPar accumulation du produitint factorielle (int n){
int p=1;for (int i=n ; i>1 ; i--)
p *= i;return p;
}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Tout près de la définition mathématique
Tout près de la définition mathématique
Concept de la récursivitéConcept de la récursivité
Version récursive Version récursive
RécursifRécursifint f (int n){ if( n==0) return 1; //cas de base else return n *f(n-1);}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
D’abord le cas de base D’abord le cas de base
Concept de la récursivitéConcept de la récursivité
Version récursive Version récursive
RécursifRécursifint f (int n){ if( n==0) return 1; //cas de base else return n *f(n-1);}
Ensuite la relation de récurrence Ensuite la relation de récurrence
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
La récursivité ne marche que si on atteint le cas de base
La récursivité ne marche que si on atteint le cas de base
RécursifRécursifint f (int n){ if( n==0) return 1; //cas de base else return f(n+1)/(n+1);}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Comment fonctionneun programme récursif ?Comment fonctionneun programme récursif ?
On demande à l’ordinateur d’exécuter f(3)
On demande à l’ordinateur d’exécuter f(3)
Concept de la récursivitéConcept de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
On stocke dans une pile le fait qu’on veut cette valeur
mais qu’on ne pourrala calculer qu’après avoir obtenu la valeur de f(2)
On stocke dans une pile le fait qu’on veut cette valeur
mais qu’on ne pourrala calculer qu’après avoir obtenu la valeur de f(2)
Comment fonctionneun programme récursif ?Comment fonctionneun programme récursif ?
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Comment fonctionneun programme récursifComment fonctionneun programme récursif
Concept de la récursivitéConcept de la récursivité
On empile les appels jusqu’à demander la valeur de f(0)
On empile les appels jusqu’à demander la valeur de f(0)
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
Comment fonctionneun programme récursifComment fonctionneun programme récursif
On empile les appels jusqu’à demander la valeur de f(0)
On empile les appels jusqu’à demander la valeur de f(0)
f(3)nn ff
33 ???? f(3)nn ff
33 ??
22 ??f(2)
f(3)nn ff
33 ??
22 ??
11 ??
f(2)
f(1)
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Comment fonctionneun programme récursifComment fonctionneun programme récursif
Concept de la récursivitéConcept de la récursivité
On dépile les appels pourpouvoir calculer la valeur de f(3)
On dépile les appels pourpouvoir calculer la valeur de f(3)
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Concept de la récursivitéConcept de la récursivité
33 ??22 22
Comment fonctionneun programme récursifComment fonctionneun programme récursif
33 6633 ??22 ??11 11
33 ??22 ??11 ??00 11
On dépile les appels pourpouvoir calculer la valeur de f(3)
On dépile les appels pourpouvoir calculer la valeur de f(3)
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Cas simple de récursivité terminale
Cas simple de récursivité terminale
Concept de la récursivitéConcept de la récursivité
A propos de la factorielle A propos de la factorielle
Boucle déguisée Boucle déguisée
Dans d’autres cas la récursivité à un plus grand apport
Dans d’autres cas la récursivité à un plus grand apport
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Tour de Hanoï: la légendeTour de Hanoï: la légende
Jeu inspiré par une fausselégende créée
par le mathématicienEdouard Lucas
Jeu inspiré par une fausselégende créée
par le mathématicienEdouard Lucas
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CC
Les moines d’un temple doivent transférer une tour de 64 disques
Les moines d’un temple doivent transférer une tour de 64 disques
Il disposent de trois piquets au total Il disposent de trois piquets au total
Tour de Hanoï: la légendeTour de Hanoï: la légende
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CC
Ils doivent respecter deux règlesIls doivent respecter deux règles
Tour de Hanoï: la légendeTour de Hanoï: la légende
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Ils doivent respecter deux règlesIls doivent respecter deux règles
Tour de Hanoï: la légendeTour de Hanoï: la légende
Ne déplacer qu'un seul disque à la fois
Ne déplacer qu'un seul disque à la fois
11
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Ils doivent respecter deux règlesIls doivent respecter deux règles
Tour de Hanoï: la légendeTour de Hanoï: la légende
Un disque doit être empilé sur un autre de dimension supérieureUn disque doit être empilé sur un autre de dimension supérieure
22
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Tour de HanoïTour de Hanoï
Selon la légende, Selon la légende,
ils auront terminés dans … 10 milliards d'années !!
ils auront terminés dans … 10 milliards d'années !!
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Avec 3 disquesAvec 3 disques
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CCAA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CCAA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CCAA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CCAA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CCAA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
AA BB CC
Avec 3 disquesAvec 3 disques
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Avec 3 disquesAvec 3 disques
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Exercice: avec 4 disquesExercice: avec 4 disques
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Exercice: avec 4 disquesExercice: avec 4 disques
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Exercice: avec 4 disquesExercice: avec 4 disques
AA BB CC
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Exercice: avec 4 disquesExercice: avec 4 disques
AA CCBB
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Avec n disquesAvec n disques
AA CCBB22
11 33
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Récursivité : exemplesRécursivité : exemples
void tour(int n, A,B,C ) {if (n==1) {
printf("%d=>%d\n",A,C); return;}tour(n-1, A,C,B ) ;printf("%d=>%d\n",A,C);tour(n-1, B,A,C ) ;return;
}
void tour(int n, A,B,C ) {if (n==1) {
printf("%d=>%d\n",A,C); return;}tour(n-1, A,C,B ) ;printf("%d=>%d\n",A,C);tour(n-1, B,A,C ) ;return;
}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Simulationde la récursive
Simulationde la récursive
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
PourquoiPourquoi
Pour comprendre le principe Pour comprendre le principe
Simulation de la récursivitéSimulation de la récursivité
Pour les langages sansrécursivité
Pour les langages sansrécursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
void f(A ) {1: if (C) {
instructions;return; }
2: f(A');3: instructions;4: return;
}
void f(A ) {1: if (C) {
instructions;return; }
2: f(A');3: instructions;4: return;
}
Simulation de la récursivitéSimulation de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Les valeurs actuelles des paramètreset des variables locales seront
empilées pour traitements ultérieurs
Les valeurs actuelles des paramètreset des variables locales seront
empilées pour traitements ultérieurs
A chaque appel à f A chaque appel à f
f(A');f(A');
Simulation de la récursivitéSimulation de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Les valeurs relatives à l'exécution actuelle de f seront restaurées
après dépilement
Les valeurs relatives à l'exécution actuelle de f seront restaurées
après dépilement
A chaque retour récursif sur f A chaque retour récursif sur f
return;return;
Simulation de la récursivitéSimulation de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Adresse de retour Adresse de retour
Simulation de la récursivitéSimulation de la récursivité
Une fois l’appel terminé
Une fois l’appel terminé Deux approches Deux approches
void f(A ) {…
@ : f(A');
@+1 : instructions;
void f(A ) {…
@ : f(A');
@+1 : instructions;
11
22
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Simulation de la récursivitéSimulation de la récursivité
Empiler la nouvelle adresse de retour Empiler la nouvelle adresse de retour
f(A');@+1 : instructions;
f(A');@+1 : instructions;
Pour revenir au niveau de l’exécutionde f
Pour revenir au niveau de l’exécutionde f
Choisie car elle simplifie le processus de traduction
Choisie car elle simplifie le processus de traduction
Adresse de retour Adresse de retour
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Version itérativede la tour de HanoiVersion itérative
de la tour de Hanoi
Simulation de la récursivitéSimulation de la récursivité
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Simulation de la récursivitéSimulation de la récursivité
void tour(int n, A,B,C ) {1: if (n==1) {
printf("%d=>%d\n",A,C); return; }
2: tour(n-1, A,C,B ) ;3: printf("%d=>%d\n",A,C);4: tour(n-1, B,A,C ) ;5: return;
}
void tour(int n, A,B,C ) {1: if (n==1) {
printf("%d=>%d\n",A,C); return; }
2: tour(n-1, A,C,B ) ;3: printf("%d=>%d\n",A,C);4: tour(n-1, B,A,C ) ;5: return;
}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Déclaration du contexte Déclaration du contexte
Simulation de la récursivitéSimulation de la récursivité
Type abstrait Type abstrait
typedef struct _context {int n,A,B,C,add;
} context;void push(int
n,A,B,C,add);context pop(void);int empty(void);void raz(void);
typedef struct _context {int n,A,B,C,add;
} context;void push(int
n,A,B,C,add);context pop(void);int empty(void);void raz(void);
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
void tour(int n,A,B,C){ context cnt; raz();
1 : if(n == 1) { printf("%d=>%d\n",A,C); goto 5 : }
2 : // Appel récursif tour(n-1,A,C,B);/* Empiler les valeurs actuelles sur la
pile. retour à 3 une fois l’appel achevé */ push(n,A,B,C,3);
// Restaurer les paramètres n--; swap(B,C); // échange B et C
goto 1;3 : printf("%d=>%d\n",A,C);
void tour(int n,A,B,C){ context cnt; raz();
1 : if(n == 1) { printf("%d=>%d\n",A,C); goto 5 : }
2 : // Appel récursif tour(n-1,A,C,B);/* Empiler les valeurs actuelles sur la
pile. retour à 3 une fois l’appel achevé */ push(n,A,B,C,3);
// Restaurer les paramètres n--; swap(B,C); // échange B et C
goto 1;3 : printf("%d=>%d\n",A,C);
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
3 : printf("%d=>%d\n",A,C);4 : // tour(n-1,B,A,C);
retour à 5 une fois l’appel achevépush(n,A,B,C,5); n--; swap(A,B); goto 1;
5 : // Traduire le returnif(empty()) return;// Restaurer les valeurs de sommet sur
les piles. cnt = pop();n=cnt.n; A=cnt.A; B=cnt.B;
C=cnt.C; goto cnt.add;
}
3 : printf("%d=>%d\n",A,C);4 : // tour(n-1,B,A,C);
retour à 5 une fois l’appel achevépush(n,A,B,C,5); n--; swap(A,B); goto 1;
5 : // Traduire le returnif(empty()) return;// Restaurer les valeurs de sommet sur
les piles. cnt = pop();n=cnt.n; A=cnt.A; B=cnt.B;
C=cnt.C; goto cnt.add;
}
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Récursivité : exemplesRécursivité : exemples
Représentation binaireReprésentation binaire
n = b0+b12+b222+…+bp2p, bi Є {0,1}n = b0+b12+b222+…+bp2p, bi Є {0,1}
Afficher à l’écran les chiffres binaires?Pour 13 on doit avoir 1101
Afficher à l’écran les chiffres binaires?Pour 13 on doit avoir 1101
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
(13)2=(6)2
=(3)2
=(1)2
=
(13)2=(6)2
=(3)2
=(1)2
=
101
1011101
101
1011101
Récursivité : exemplesRécursivité : exemples
Représentation binaireReprésentation binaire
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Faire des divisions euclidiennes successives par 2
Faire des divisions euclidiennes successives par 2
C’est simpleC’est simplevoid binaire (int n){ while( n!=0){ printf("%d ",n%2); n= n/2; } return ;}
Récursivité : exemplesRécursivité : exemples
Représentation binaireReprésentation binaire
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Mais …Mais …AfficheAffiche 10111011 au lieu deau lieu de 11011101void binaire (int n){ while( n!=0){ printf("%d ",n%2); n= n/2; } return ;}
Récursivité : exemplesRécursivité : exemples
Représentation binaireReprésentation binaire
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
Programme récursif Programme récursif Arrêt: n , x/2n =0 Arrêt: n , x/2n =0
Affiche toujours Affiche toujours 10111011 au lieu de au lieu de 11011101void binRec (int n){ if( n > 0){ printf("%d ",n%2); binRec(n/2); } return ;}
Récursivité : exemplesRécursivité : exemples
Représentation binaireReprésentation binaire
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
3311
131366
(13)(13)(6)(6)
11001111
void binRec (int n){ if( n > 0){ printf("%d ",n%2); binRec(n/2); } return ;}
Pourquoi ? Pourquoi ?
Inverser les deux instructions
Récursivité : exemplesRécursivité : exemples
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 7 – Structures de données linéaires : la récursivité
STRUCTURES DE
DONNÉES
STRUCTURES DE
DONNÉES