lec 07_récursi

Post on 18-Apr-2015

34 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related