Professional Documents
Culture Documents
23 mars 2007
Principe de la récursivité
Algorithmes récursifs
Résolution de problèmes par récursivité
Objectifs de la séance 3
Plan
1 Principe de la récursivité
Decendre ou monter un escalier
Couper un gâteau
2 Algorithmes récursifs
Définition
Algorithmes classiques
Les puissances de a
Objectif :
Calculer an en "travaillant" le moins possible
an = a × an−1
arrivee depart arrivee
n n
depart
ITERATIF RECURSIF
1 1
0 0
a^0 = 1 a^0 = 1
on sait :
1 monter/descendre d’une marche : an = a × an−1
2 a0 = 1
Exemple d’exécution
Calcul de la puissance
Exemple d’exécution
Calcul de la puissance
Exécution de l’algorithme
Pour a = 72 et b = 34
1. PGCD(72, 34)
2. b 6= 0
5. c =4
6. PGCD(34, 4)
2. b 6= 0
5. c =2
6. PGCD(4, 2)
2. b 6= 0
5. c =0
6. PGCD(2, 0)
2. b=0
3. PGCD = 2
S. Verel, M.-E. Voge Algorithmes récursifs
Principe de la récursivité
Decendre ou monter un escalier
Algorithmes récursifs
Couper un gâteau
Résolution de problèmes par récursivité
Recherche dichotomique
Recherche dans un tableau de nombres entiers ordonnés
Exécution de l’algorithme
t: 2 5 6 8 11 15 20
1. recherche(6, t, 0, 6) 2 5 6 8 11 15 20
1. c =3
1. t[3] > 6
2. —–> recherche(6, t, 0, 2) 2 5 6 8 11 15 20
2. c =1
2. t[1] < 6
3. ———-> recherche(6, t, 2, 2) 2 5 6 8 11 15 20
3. c =2
3. t[2] = 6
3. ———-> recherche(6, t, 2, 2) = Vrai
4. —–> recherche(6, t, 0, 2) = Vrai
5. recherche(6, t, 0, 6) = Vrai
S. Verel, M.-E. Voge Algorithmes récursifs
Principe de la récursivité
Decendre ou monter un escalier
Algorithmes récursifs
Couper un gâteau
Résolution de problèmes par récursivité
Définition (informelle)
Algorithmes récursifs
Un algorithme récursif est un algorithme qui fait appel à lui-même
dans le corps de sa propre définition.
Exemples
Exemples
Exemples
A méditier
Calcul de la puissance
Intérêts
Calcul de la factorielle
Factorielle
1, si n = 0
n! =
n.(n − 1)!, sinon
Exécution de l’algorithme
Calcul de 3!.
1. factorielle(3) = 3 * factorielle(2)
2. —–> factorielle(2) = 2 * factorielle(1)
3. ———-> factorielle(1) = 1 * factorielle(0)
4. —————-> factorielle(0) = 1
5. ———-> factorielle(1) = 1 * 1 = 1
6. —–> factorielle(2) = 2 * 1 = 2
7. factorielle(3) = 3 * 2 = 6
Recherche dichotomique
Recherche d’un mot dans un dictionnaire
début
pages de recherche <- dictionnaire
tant que mot lu n’est pas le mot recherché faire
lire mot médian des pages de recherche
si le mot lu est plus petit que mot recherché alors
pages de recherche <- pages à droite du mot lu
sinon
pages de recherche <- pages à gauche du mot lu
fin si
fin tant que
retourner (mot lu)
fin
Recherche dichotomique
Recherche d’un mot dans un dictionnaire
Recherche dichotomique
Recherche d’un mot dans un dictionnaire
Algorithme récursif
Exécution de l’algorithme
Calculer S(n) = 13 + 23 + 33 + . . . + n3
Est-ce que le problème dépend d’un (ou plusieurs)
paramètre(s) ?
−→ Oui n.
Est-il possible de résoudre le problème lorsque la (les) valeur(s)
du paramètre est "petite(s)" ?
−→ Oui pour n = 0 ou n = 1
Est-il possible de résoudre le problème à l’aide de la résolution
du problème portant sur une (des) "plus petite(s)" valeur(s)
du paramètre ?
−→ Oui, S(n) = S(n − 1) + n3
Exécution de l’algorithme
Calcul de S(3)
1. sommeCube(3)
2. —–> sommeCube(2)
3. ———-> sommeCube(1)
4. —————-> sommeCube(0) = 0
5. ———-> sommeCube(1) = 0 + 13 = 1
6. —–> sommeCube(2) = 1 + 23 = 9
7. sommeCube(3) = 9 + 33 = 18
Régionnement du plan
Régionnement du plan
Algorithme
Objectifs de la séance 3
Travail de documentation