Académique Documents
Professionnel Documents
Culture Documents
ELGARGOUR Achraf
20 janvier 2022
Introduction définition types de récursivité
Introduction
1/11
La récursivité
Introduction définition types de récursivité
Définition 1
On appelle fonction récursive toute fonction qui fait appel à elle même soit
directement ou indirectement.
Afin de s’arrêter, une fonction récursive doit obligatoirement contenir au
moins un cas de base, c’est à dire des valeurs particulières de ses arguments
pour lesquelles il n’y a aucun appel récursif, mais un traitement particulier
qui assure la terminaison.
2/11
La récursivité
Introduction définition types de récursivité
Syntaxe générale :
1 def f o n c ti o n_ r ec u rs i ve ( ... ) :
2 if c o n d i t i o n _ d e _ b a s e _ v e r i f i e e :
3 cas_de_base
4 else :
5 instructions ()
6 f on c ti o n_ r ec u rs i v e ( ... )
3/11
La récursivité
Introduction définition types de récursivité
Exemple : la factorielle
La factorielle d’un nombre n donné est le produit des nombres entiers
inférieurs ou égaux à ce nombre n. On peut définir d’une manière récurrente
comme suit :
0! = 1
n! = n ∗ (n − 1)! si n > 0
4/11
La récursivité
Introduction définition types de récursivité
Exemple : la factorielle
La factorielle d’un nombre n donné est le produit des nombres entiers
inférieurs ou égaux à ce nombre n. On peut définir d’une manière récurrente
comme suit :
0! = 1
n! = n ∗ (n − 1)! si n > 0
1 def factorielle ( n ) :
2 if n ==0:
3 return 1
4 else :
5 return n * factorielle (n -1)
4/11
La récursivité
Introduction définition types de récursivité
Comment ça marche ?
5/11
La récursivité
Introduction définition types de récursivité
Fonctionnement :
Quand on appelle une fonction récursive, cette dernière est en fait appelée à
plusieurs reprises. Pour gérer un programme ou plusieurs fonctions sont
appelées, l’interpréteur utilise une pile d’exécution. Il y emmagasine des
valeurs et des adresses permettant de garder la trace de l’endroit ou chaque
fonction active doit retourner à la fin de son exécution.
6/11
La récursivité
Introduction définition types de récursivité
Remarques :
7/11
La récursivité
Introduction définition types de récursivité
récursivité simple
8/11
La récursivité
Introduction définition types de récursivité
récursivité multiple
9/11
La récursivité
Introduction définition types de récursivité
récursivité multiple
1 def fibo ( n ) :
2 if n ==0 or n ==1:
3 return 1
4 else :
5 return fibo (n -1) + fibo (n -2)
9/11
La récursivité
Introduction définition types de récursivité
récursivité imbriquée
Ackermann(m, n) = n + 1 si m = 0
Ackermann(m, n) = Ackermann(m − 1, 1) si m > 0 et n = 0
Ackermann(m, n) = Ackermann(m − 1, Ackermann(m, n − 1)) si m > 0 et n > 0
10/11
La récursivité
Introduction définition types de récursivité
récursivité imbriquée
Ackermann(m, n) = n + 1 si m = 0
Ackermann(m, n) = Ackermann(m − 1, 1) si m > 0 et n = 0
Ackermann(m, n) = Ackermann(m − 1, Ackermann(m, n − 1)) si m > 0 et n > 0
1 def Ackermann (m , n ) :
2 if m ==0:
3 return n +1
4 elif n ==0:
5 return Ackermann (m -1 ,1)
6 else :
7 return Ackermann (m -1 , Ackermann (m ,n -1) )
10/11
La récursivité
Introduction définition types de récursivité
récursivité croisée
paire(0) = vrai impaire(0) = faux
paire(n) = impaire(n − 1) si n > 0 impaire(n) = paire(n − 1) si n > 0
11/11
La récursivité
Introduction définition types de récursivité
récursivité croisée
paire(0) = vrai impaire(0) = faux
paire(n) = impaire(n − 1) si n > 0 impaire(n) = paire(n − 1) si n > 0
1 def paire ( n ) :
2 if n ==0:
3 return True
4 else :
5 return impaire (n -1)
6
7 def impaire ( n ) :
8 if n ==0:
9 return False
10 else :
11 return paire (n -1)
11/11
La récursivité