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

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
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfFadouaBouafifSamoud
 
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
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitivesInforMatica34
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesInes Ouaz
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesInes Ouaz
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Calcul scientifique avec python Numpy
Calcul scientifique avec python NumpyCalcul scientifique avec python Numpy
Calcul scientifique avec python NumpyHaytam EL YOUSSFI
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrigeAmineMouhout1
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 

Tendances (20)

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)
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdf
 
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
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitives
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de données
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de données
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Traitement du signal
Traitement du signalTraitement du signal
Traitement du signal
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Calcul scientifique avec python Numpy
Calcul scientifique avec python NumpyCalcul scientifique avec python Numpy
Calcul scientifique avec python Numpy
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 

Similaire à Chap4 Récursivité en python

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 (14)

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

Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...Unidad de Espiritualidad Eudista
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfAtelier Canopé 37 - Tours
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfAtelier Canopé 37 - Tours
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Atelier Canopé 37 - Tours
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Majida Antonios, M.Ed.
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 

Dernier (17)

Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 

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)