Académique Documents
Professionnel Documents
Culture Documents
SMI-3
DÉPARTEMENT INFORMATIQUE
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
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
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
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
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
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
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
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
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
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 )
Fonction Factorielle
Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Fonction Factorielle
Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Fonction Factorielle
Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Fonction Factorielle
Factorielle ( 5 ) = 5 * Factorielle ( 4 )
Factorielle ( 4 ) = 4 * Factorielle ( 3 )
Factorielle ( 3 ) = 3 * Factorielle ( 2 )
Factorielle ( 2 ) = 2 * Factorielle ( 1 )
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
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
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
• 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
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
Début
Si N < 2 Alors
Retourne 1
Sinon
Retourne N * Factorielle ( N -
1)
Fin Si
Fin
Début
Si N < 2 Alors
Retourne 1
Sinon
Retourne N * Factorielle ( N -
1)
Fin Si
Cas récursif
Fin
Début
Si N < 2 Alors
Retourne 1
Sinon
Retourne N * Factorielle ( N -
1)
Fin Si
Cas récursif
Fin
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
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
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
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
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
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
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
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
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
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
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
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 )
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
Début
Si N = 0 Alors
Retourne 1
Sinon
Retourne X * Puissance ( X , N - 1)
Fin Si
Fin
Résoudre(P) =
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