SlideShare une entreprise Scribd logo
1  sur  6
Télécharger pour lire hors ligne
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 1
Chapitre 4 : La récursivité en Python
• Définition de la récursivité
• Comparaison entre l’itératif et le récursif
1. Définition de la récursivité et comparaison entre l’itératif et le
récursif
a. La récursivité
Pour minimiser la complexité de compréhension d’un problème, on opte pour sa
décomposition en des sous-problèmes moins complexes. Ce qui fait que la résolution
du grand problème revient à résoudre ceux des sous-problèmes (L’algorithme va
s’appeler lui-même pour résoudre les sous-problèmes) La notion proche en
mathématique à cette démarche est le raisonnement par récurrence.
Une fonction est dite récursive si elle s’appelle elle-même. Il faut prévoir toujours une
condition d’arrêt pour stopper les appels récursifs sinon on obtient un traitement
similaire à une boucle infinie.
Exemple :
Un appel récursif induit lui-même à d’autres appels récursifs, ce qui peut mener à un
nombre infini d’appels. Il faut arrêter la suite des appels ! Dans notre cas, on sait que
0!=1, une fois n atteint la valeur 0, le processus d’appel doit s’arrêter:
Python utilise une pile d’exécution pour enregistrer les appels et leurs contextes
(paramètres utilisés, résultats rendus, variables locales déclarées par chacun des
appels…). Mais la taille de la pille n’est illimitée! Elle peut déborder et donc elle
déclenche une exception.
La pile d’exécution de l’appel de fact avec n=3 a l’allure suivante:
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 2
D’une manière générale, pour obtenir une solution récursive à un problème
 On paramètre le problème
 On décompose le problème
 On détermine la condition d’arrêt qui arrête les énoncés récursifs
Dans le cas de la factorielle, la relation entre le cas simple et le cas général est la
réduction des données n!=n*(n-1)! Mais ce n’est pas toujours qu’on attend une
valeur!
Parfois la fonction ne retourne aucune valeur mais effectue des actions récursives
comme par exemple le cas d’affichage d’une liste ou son inversion
 Exemple 1 :
 Exécution
 Exemple 2 :
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 3
 Exécution
b. Itératif vs récursif
Toute solution récursive peut avoir une solution itérative équivalente. La version
récursive augmente la complexité algorithmique par rapport à la version itérative
d’où une augmentation du temps du calcul. L’avantage de la récursivité réside au
niveau de l’abstraction. Il suffit de décrire la solution au problème à partir d’un cas
simple. Ce style de programmation est appelé déclaratif. On utilise la récursivité si:
 Le raisonnement du problème est lui-même récursif.
 La structure de données utilisée est récursive(une liste peut être vue
comme un élément suivi d’une autre liste).
c. Exemple de raisonnement récursif : les tours de Hanoï
Il s’agit d’un jeu où on va déplacer les disques d’un point de départ vers une
destination. Nous disposons donc de :
• 3 bâtons : A,B,C
• 3 disques de différentes tailles déposés les uns sur les autres, du plus grand au
plus petit en terme de diamètre
• 2 Règles à suivre :
o Déplacer un disque à la fois d’un bâton à un autre
o Ne jamais mettre un disque sur un plus petit disque
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 4
Exemple :
1. Mettre tous les disques sauf le plus grand sur C
2. Déplacer le plus grand disque de A vers B
3. Mettre tous les disques de C sur B
Les points 1 et 2 de la solution esquissée sont des problèmes de Hanoï avec un
disque de moins. Si on sait résoudre un problème avec n-1 disques, alors on sait le
résoudre avec n disques. Or, on sait résoudre le problème avec 1 disque. Le
problème est résolu pour tout nombre n≥1 de disques. La solution est récursive.
Raisonnement :
 Cas de n=2
 On déplace le petit disque de A vers C
 On déplace le grand disque de A vers B
 On déplace le petit disque de C vers B
Donc, on a utilisé 3 déplacements pour résoudre le problème
 Cas général
 Déplacer les n-1 premier disques (D1,D2,..Dn-1) du pilier gauche vers le
pilier intermédiaire
 Déplacer le grand disque Dn du pilier gauche au pilier au centre
 Et déplacer les n-1 disques du pilier intermédiaire vers le pilier au centre
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 5
En python, la solution est :
d. Type de récursivité
 Simple: La fonction récursive s’appelle elle-même une seule fois (calcul de la
factorielle)
 Multiple: La fonction s’appelle elle-même plusieurs fois dans un même appel
récursif (calcul d’une combinaison)
 Croisée: Deux fonctions récursive chacune appelant l’autre (exemple nombre
pair et nombre impair)
 Imbriquée: l’appel est une imbrication d’appel (suite Ackermann)
[LA RECURSIVITE EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 6
 Terminale VS non terminale: quand l’appel récursif nécessite des instructions
de calcul autre que l’appel de la fonction elle-même, on parle de récursivité
non terminale
2. Applications
1. Donner la version récursive de la suite de Fibbonacci
2. Donner la version itérative et récursive de la fonction qui permet, pour deux
entier positifs a et b, de retourner « vrai » si a divise b et faux sinon.
Indication : test avec a=2 et b=8. On retranche de b la valeur a tant que a<b.
Si on trouve a=b c’est bien 2 est diviseur de 8!
3. Ecrire une fonction récursive permettant de convertir un nombre N donné
(base 10) en une base b (2<=b<=10)

Contenu connexe

Tendances

Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage CMohamed Lahby
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numériqueMariem ZAOUALI
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfsalah fenni
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac Amri Ossama
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 
Chapitre 8: Les arbres
Chapitre 8: Les  arbresChapitre 8: Les  arbres
Chapitre 8: Les arbresMohamed Lahby
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombressalah fenni
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: TableauInforMatica34
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Sana Aroussi
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données IIRiadh Bouslimi
 

Tendances (20)

Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numérique
 
Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 
Chapitre 8: Les arbres
Chapitre 8: Les  arbresChapitre 8: Les  arbres
Chapitre 8: Les arbres
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombres
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 

Similaire à Chap4 Récursivité en python

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
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdfdonixwm
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAmelianikholoud
 
Algorithme d'approximation
Algorithme d'approximationAlgorithme d'approximation
Algorithme d'approximationMed Lassoued
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdfMouloudi1
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptxtarekjedidi
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéSana REFAI
 

Similaire à Chap4 Récursivité en python (15)

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
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFAcours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA
 
Algorithme d'approximation
Algorithme d'approximationAlgorithme d'approximation
Algorithme d'approximation
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Oc3 2013
Oc3 2013Oc3 2013
Oc3 2013
 
Diviser Pour Régner
Diviser Pour RégnerDiviser Pour Régner
Diviser Pour Régner
 
Ch2_ la récursivité.pdf
Ch2_ la récursivité.pdfCh2_ la récursivité.pdf
Ch2_ la récursivité.pdf
 
chapitre 5.pptx
chapitre 5.pptxchapitre 5.pptx
chapitre 5.pptx
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdf
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptx
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 

Plus de Mariem ZAOUALI

Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Mariem ZAOUALI
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en pythonMariem ZAOUALI
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à pythonMariem ZAOUALI
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jmsMariem ZAOUALI
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures repartiesMariem ZAOUALI
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaMariem ZAOUALI
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de baseMariem ZAOUALI
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursiveMariem ZAOUALI
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Mariem ZAOUALI
 

Plus de Mariem ZAOUALI (18)

Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
TP2 RMI
TP2 RMITP2 RMI
TP2 RMI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corba
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de base
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursive
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / Tunisie
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / Tunisie
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / Tunisie
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
 

Dernier

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.docKarimKhrifech
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
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
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurdinaelchaine
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
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
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxpopzair
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfssuser40e112
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 

Dernier (20)

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.doc
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
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
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteur
 
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
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.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
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptx
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 

Chap4 Récursivité en python

  • 1. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 1 Chapitre 4 : La récursivité en Python • Définition de la récursivité • Comparaison entre l’itératif et le récursif 1. Définition de la récursivité et comparaison entre l’itératif et le récursif a. La récursivité Pour minimiser la complexité de compréhension d’un problème, on opte pour sa décomposition en des sous-problèmes moins complexes. Ce qui fait que la résolution du grand problème revient à résoudre ceux des sous-problèmes (L’algorithme va s’appeler lui-même pour résoudre les sous-problèmes) La notion proche en mathématique à cette démarche est le raisonnement par récurrence. Une fonction est dite récursive si elle s’appelle elle-même. Il faut prévoir toujours une condition d’arrêt pour stopper les appels récursifs sinon on obtient un traitement similaire à une boucle infinie. Exemple : Un appel récursif induit lui-même à d’autres appels récursifs, ce qui peut mener à un nombre infini d’appels. Il faut arrêter la suite des appels ! Dans notre cas, on sait que 0!=1, une fois n atteint la valeur 0, le processus d’appel doit s’arrêter: Python utilise une pile d’exécution pour enregistrer les appels et leurs contextes (paramètres utilisés, résultats rendus, variables locales déclarées par chacun des appels…). Mais la taille de la pille n’est illimitée! Elle peut déborder et donc elle déclenche une exception. La pile d’exécution de l’appel de fact avec n=3 a l’allure suivante:
  • 2. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 2 D’une manière générale, pour obtenir une solution récursive à un problème  On paramètre le problème  On décompose le problème  On détermine la condition d’arrêt qui arrête les énoncés récursifs Dans le cas de la factorielle, la relation entre le cas simple et le cas général est la réduction des données n!=n*(n-1)! Mais ce n’est pas toujours qu’on attend une valeur! Parfois la fonction ne retourne aucune valeur mais effectue des actions récursives comme par exemple le cas d’affichage d’une liste ou son inversion  Exemple 1 :  Exécution  Exemple 2 :
  • 3. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 3  Exécution b. Itératif vs récursif Toute solution récursive peut avoir une solution itérative équivalente. La version récursive augmente la complexité algorithmique par rapport à la version itérative d’où une augmentation du temps du calcul. L’avantage de la récursivité réside au niveau de l’abstraction. Il suffit de décrire la solution au problème à partir d’un cas simple. Ce style de programmation est appelé déclaratif. On utilise la récursivité si:  Le raisonnement du problème est lui-même récursif.  La structure de données utilisée est récursive(une liste peut être vue comme un élément suivi d’une autre liste). c. Exemple de raisonnement récursif : les tours de Hanoï Il s’agit d’un jeu où on va déplacer les disques d’un point de départ vers une destination. Nous disposons donc de : • 3 bâtons : A,B,C • 3 disques de différentes tailles déposés les uns sur les autres, du plus grand au plus petit en terme de diamètre • 2 Règles à suivre : o Déplacer un disque à la fois d’un bâton à un autre o Ne jamais mettre un disque sur un plus petit disque
  • 4. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 4 Exemple : 1. Mettre tous les disques sauf le plus grand sur C 2. Déplacer le plus grand disque de A vers B 3. Mettre tous les disques de C sur B Les points 1 et 2 de la solution esquissée sont des problèmes de Hanoï avec un disque de moins. Si on sait résoudre un problème avec n-1 disques, alors on sait le résoudre avec n disques. Or, on sait résoudre le problème avec 1 disque. Le problème est résolu pour tout nombre n≥1 de disques. La solution est récursive. Raisonnement :  Cas de n=2  On déplace le petit disque de A vers C  On déplace le grand disque de A vers B  On déplace le petit disque de C vers B Donc, on a utilisé 3 déplacements pour résoudre le problème  Cas général  Déplacer les n-1 premier disques (D1,D2,..Dn-1) du pilier gauche vers le pilier intermédiaire  Déplacer le grand disque Dn du pilier gauche au pilier au centre  Et déplacer les n-1 disques du pilier intermédiaire vers le pilier au centre
  • 5. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 5 En python, la solution est : d. Type de récursivité  Simple: La fonction récursive s’appelle elle-même une seule fois (calcul de la factorielle)  Multiple: La fonction s’appelle elle-même plusieurs fois dans un même appel récursif (calcul d’une combinaison)  Croisée: Deux fonctions récursive chacune appelant l’autre (exemple nombre pair et nombre impair)  Imbriquée: l’appel est une imbrication d’appel (suite Ackermann)
  • 6. [LA RECURSIVITE EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 4 : La récursivité en Python 6  Terminale VS non terminale: quand l’appel récursif nécessite des instructions de calcul autre que l’appel de la fonction elle-même, on parle de récursivité non terminale 2. Applications 1. Donner la version récursive de la suite de Fibbonacci 2. Donner la version itérative et récursive de la fonction qui permet, pour deux entier positifs a et b, de retourner « vrai » si a divise b et faux sinon. Indication : test avec a=2 et b=8. On retranche de b la valeur a tant que a<b. Si on trouve a=b c’est bien 2 est diviseur de 8! 3. Ecrire une fonction récursive permettant de convertir un nombre N donné (base 10) en une base b (2<=b<=10)