Vous êtes sur la page 1sur 51

ALGORITHMIQUE – 2: LA RÉCURSIVITÉ

SMI-3

A.U: 2022 – 2023

DÉPARTEMENT INFORMATIQUE

Pr. Redouan Lahmyed ALGORITHMIQUE 2 1


Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 2


Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (N))
Variables
F , i : Entier

Début Appel de
F←1
Si N < 2 Alors la fonction
Retourne F

Sinon
Pour i =2 à N Pas de
1
F←F*i Déclaration de
FinPour la fonction
Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 3
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (N))
Variables
F , i : Entier

Début
F←1
Si N < 2 Alors Solution itérative
Retourne F

Sinon
Pour i =2 à N Pas de
1
F←F*i
FinPour

Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 4
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (5))
Variables
F , i : Entier
Solution itérative
Début
F←1
Si N < 2 Alors
Retourne F
État initial:

Sinon
Pour i =2 à N Pas de
1
F←F*i
FinPour Itérations:
Retourne F
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 5
Récursivité
Exercice: Écrire une fonction qui calcule la factorielle d'une valeur saisie par
l’utilisateur.
Fonction Factorielle ( N: Entier ) : Entier Ecrire (" La factorielle est :" , Factorielle (5))
Variables
F , i : Entier
Solution itérative
Début
F←1
Si N < 2 Alors
Retourne F
État initial: F=1

Sinon F=2*1=2
Pour i =2 à N Pas de
1 F=3*2=6
F←F*i
FinPour Itérations: F = 4 * 6 = 24
Retourne F F = 5 * 24 = 120
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 6
Récursivité

Fonction Factorielle

Pr. Redouan Lahmyed ALGORITHMIQUE 2 7


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * 1
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 8


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * 1
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 9


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 10


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * 2 * 1
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 11


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 12


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * 3 * 2 * 1
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 13


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 14


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * 4 * 3 * 2 * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 15


Récursivité

Fonction Factorielle

Factorielle ( 1 ) = 1
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 5 ) = 5 * Factorielle ( 4 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 16


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 17


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 18


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 19


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 20


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 21


Récursivité

Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 ) Solution
récursive
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 22


Récursivité
Fonction Factorielle

Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Solution
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
récursive
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
Factorielle ( 1 ) = 1

• En informatique, la récursivité est un des concepts de programmation les plus importants.

• Permet de résoudre des problèmes complexes en le décomposant en problèmes plus petits.

• Une procédure (ou fonction) est dite récursive lorsqu'elle fait appel à elle même.
• C’est l’équivalent de la récurrence en mathématique.
• La programmation récursive sert à remplacer les boucles (Pour , tant que,
Répéter .. jusqu'à).
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Récursivité
Solution itérative Solution récursive

Fonction Factorielle ( N: Entier ) : Entier Fonction Factorielle ( N: Entier ) : Entier

Variables
F , i : Entier Début
Si N < 2 Alors
Début Retourne 1
F←1
Si N < 2 Alors Sinon
Retourne F
Retourne N * Factorielle ( N -
Sinon 1)
Pour i =2 à N Pas de
1 Fin Si
F←F*i
FinPour

Retourne F Fin
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 24
Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 25


Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 26


Récursivité
Solution récursive

Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 27


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 28


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 29


Récursivité
Solution récursive

Cas de base
Fonction Factorielle ( N: Entier ) : Entier

Début
Si N < 2 Alors
Retourne 1

Sinon

Retourne N * Factorielle ( N -
1)

Fin Si

Cas récursif
Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 30


Récursivité

Exercice: Écrire une fonction récursive qui calcule la puissance d'un


entier

Fonction Puissance ( X: Entier , n: Entier) : Entier

Variables
P : Entier

Début
P X^n
Retourne P

Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 31
Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * 1
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 32


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * 1
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 33


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 34


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * X * 1
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 35


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 36


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * X * X * 1
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 37


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 38


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * X * … * X * 1

Pr. Redouan Lahmyed ALGORITHMIQUE 2 39


Récursivité

Fonction Puissance

Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * Puissance ( X , N - 1 )

Pr. Redouan Lahmyed ALGORITHMIQUE 2 40


Récursivité

Fonction Puissance
Cas de base
Puissance ( X , 0 ) = 1
Puissance ( X , 1 ) = X * Puissance ( X , 0 )
Puissance ( X , 2 ) = X * Puissance ( X , 1 )
Puissance ( X , 3 ) = X * Puissance ( X , 2 )
……….
Puissance ( X , N ) = X * Puissance ( X , N - 1 )
Cas récursif

Pr. Redouan Lahmyed ALGORITHMIQUE 2 41


Récursivité
Solution récursive

Fonction Puissance (X: Entier , N: Entier ) : Entier

Début
Si N = 0 Alors
Retourne 1

Sinon

Retourne X * Puissance ( X , N - 1)

Fin Si

Fin

Pr. Redouan Lahmyed ALGORITHMIQUE 2 42


Récursivité
Résumé

 Qu'est-ce que la récursivité ?

Une fonction récursive est une fonction qui s'appelle elle-même.

 Définir une fonction récursive

 Au moins un cas de base et,


 Au moins un cas récursif (cas général).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 43


Récursivité
Exercice: Ecrire un algorithme qui demande à l'utilisateur de taper un entier
positif n Ensuite, à l'aide d'une fonction récursive, l'algorithme
calcule et affiche tous les terms de la suite de Fibonacci, inférieurs
ou égaux à n.

La suite de Fibonacci est définie comme :

Pr. Redouan Lahmyed ALGORITHMIQUE 2 44


Récursivité
Exercice: Ecrire un algorithme qui demande à l'utilisateur de taper un entier
positif n Ensuite, à l'aide d'une fonction récursive, l'algorithme
calcule et affiche tous les terms de la suite de Fibonacci, inférieurs
ou égaux à n.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 45


Récursivité

Pr. Redouan Lahmyed ALGORITHMIQUE 2 46


Récursivité terminale
Défnition
Une définition de fonction f est récursive terminale quand tout appel
récursif est de la forme return f(...); La valeur retournée est
directement la valeur obtenue par un appel récursif, sans qu’il n’y ait
aucune opération sur cette valeur.

Pr. Redouan Lahmyed ALGORITHMIQUE 2 47


Récursivité terminale
Défnition
Une définition de fonction f est récursive terminale quand tout appel
récursif est de la forme return f(...); La valeur retournée est
directement la valeur obtenue par un appel récursif, sans qu’il n’y ait
aucune opération sur cette valeur.

Fonction Somme (A: Entier , B: Entier ) : Entier Exemple:

Début Somme ( 4 , 3 ) = Somme ( 5 , 2 )


Si B = 0 Alors
Retourne A = Somme ( 6 , 1 )
Sinon
Retourne Somme ( A + 1 , B - 1) = Somme ( 7 , 0 )
Fin Si
Fin
=7

Pr. Redouan Lahmyed ALGORITHMIQUE 2 48


Récursivité non-terminale
Défnition
L’appel récursif n’est pas la dernière instruction et/ou elle n’est pas
isolée (fait partie d’une expression).

Pr. Redouan Lahmyed ALGORITHMIQUE 2 49


Récursivité non-terminale
Défnition
L’appel récursif n’est pas la dernière instruction et/ou elle n’est pas
isolée (fait partie d’une expression).

Fonction Somme (A: Entier , B: Entier ) : Entier Exemple:

Début Somme ( 4 , 2 ) = 1 + Somme ( 4 , 1 )


Si B = 0 Alors
Retourne A = 1 + 1 + Somme ( 4 , 0 )
Sinon
Retourne 1 + Somme ( A , B - 1) =1+1+4
Fin Si
Fin
=6

Pr. Redouan Lahmyed ALGORITHMIQUE 2 50


La recette de récursivité
 S’assurer que le problème peut se décomposer en un ou plusieurs
sous-problèmes de même nature.

 Identifier le cas de base qui est le plus petit problème qui ne se


décompose pas en sous-problèmes

 Résoudre(P) =

 si P est un cas de base, le résoudre directement

 sinon
• décomposer P en sous-problèmes P1, P2,...
• résoudre récursivement P1, P2,...
• combiner les résultats pour obtenir la solution pour P

Pr. Redouan Lahmyed ALGORITHMIQUE 2 51

Vous aimerez peut-être aussi