Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
RABAH M ed Ali 2018/2019 informatique@LRPSoliman
2
I- Introduction: Activité 1
3
On constate un phénomène de répétition de la même chose en appliquant le même processus mais à des dimensions différentes. Pour chaque cas le traitement s’arrête après un certain nombre d’itérations. Chaque objet est définie à partir de lui même. C’est qu’on appelle la Récursivité I- Introduction: Constatation
4
Essayons de trouver le phénomène de la récursivité
5
Proposez un algorithme d’une fonction permettant de calculer la factorielle d’un entier N. Comment appelle-t-on le procédé utilisé dans ce traitement ? I- Introduction: Activité 2
6
I- Introduction: Solution Il s’agit d’un procédé itératif on a utilisé la boucle itératif Pour. Algorithme de la fonction Factorielle : 0) DEF FN Factorielle (n : Entier) : Entier 1) F 1 2) Pour i de 2 à N Faire F F * i Fin Pour 3) Factorielle F 4) Fin Factorielle
7
Notation mathématiquement: N! = n x (n-1) x (n-2) x (n-3) x.......x 2 x 1 Et 0! =1 N!= n x (n-1)! Et 0! =1 Notation algorithmique: Factorielle (n) = n * Factorielle (n-1) Factorielle (0) = 1 Remarque: Pour définir factorielle (n) on a appelé la même fonction sur d’autres données plus simples (factorielle (n-1)). dans ce cas la fonction Factorielle est dite Récursive. I- Introduction: Suite
8
Factorielle (4) =4 * Factorielle (3) Factorielle (3) =3 * Factorielle (2) Factorielle (2) =2 * Factorielle (1) Factorielle (1) =1 * Factorielle (0) Factorielle (0)= I- Introduction: Exécution manuelle En utilisant la formule précédente calculer manuellement Factorielle (4): = 24 = 6 = 2 = 1 1
9
Pour calculer Factorielle (n) on a : 1/ Fait l’appel de la fonction Factorielle (n-1) : Factorielle (n) = n * Factorielle (n-1) L’appel de la fonction elle-même 2/ Arrêté le traitement quand n arrive à 0 : Si (n = 0) Alors Factorielle 1 La condition d’arrêt du procédé de calcul (cas trivial pas d’appel du module lui-même) I- Introduction: Conclusion
10
I- Introduction: Version récursive Etape 1 : Paramétrage Etape 2 : Rechercher le point d’arrêt Etape 3 : Appel récursive 0) DEF FN Factorielle (n : Octet) : Entier Long 1) Si (n = 0) Alors Factorielle 1 Sinon Factorielle n * Factorielle (n-1) Fin Si 2) Fin Factorielle Pour le cas n=0 on a: Factorielle (0)= 1 n : Octet Factorielle(n) = n * Factorielle (n-1)
11
Un module est dit récursif, si dans sa définition fait appelle à lui-même. II- Définition:
12
1/ Tout module récursif doit avoir au moins un cas qui ne doit pas comporter d’appel au module lui-même (cas de base ou trivial). Factorielle 1 pour N =0 sinon le module sera infini 2/ Tout module récursif doit avoir au moins un appel à lui-même avec des paramètres s’approchant de plus en plus du point d’arrêt. Factorielle N * Factorielle (N-1) sinon le module sera infini 3/ Tout module récursif se traduit par une structure conditionnelle. III-Règles de construction
13
1/ A chaque appel, il y a mémorisation d’une valeur différente d'un même paramètre formel dans un espace mémoire dit : une pile. 2/ Tout module récursif se traduit par une structure conditionnelle dont l’une des alternatives correspond au point d’arrêt. Remarques:
14
Applications Tours de Hanoï
15
Le jeu des tours de Hanoï est un jeu de réflexion qui consiste à déplacer n disques d'une tour de « départ » A à une tour d'« arrivée » C en passant par une tour intermédiaire » B, et ceci en un minimum de coups. Principe
16
Les règles de jeu sont : Déplacer un seul disque à la fois Déplacer un disque uniquement sur un disque plus grand, Nous ne pouvons déplacer un disque qui se trouve sous un autre Règles
17
Solution pour n=1 Déplacer le disque de A à C
18
Solution pour n=2 Déplacer un disque de A vers B utilisant C Déplacer un disque de A vers C
19
Solution pour n=2 Déplacer un disque de A vers B utilisant C Déplacer un disque de A vers C Déplacer un disque de B vers C utilisant A
20
Solution pour n=3 Déplacer 2 disques de A vers B utilisant C Déplacer un disque de A vers C
21
Solution pour n=3 Déplacer 2 disques de A vers B utilisant C Déplacer un disque de A vers C Déplacer 2 disques de B vers C utilisant A
22
Solution pour n tours Déplacer n-1 disques de A vers B utilisant C Déplacer un disque de A vers C Déplacer n-1 disques de B vers C utilisant A
23
0) DEF PROC Hanoi (n: octet; A, B, C:caractère) 1) Si (n>0) Alors PROC Hanoi (n-1, A, C, B) Ecrire (Déplacer un disque de, A, vers, C) PROC Hanoi (n-1, B, A, C) Fin Si 2) Fin Hanoi Appel de la procédure ( n=3 ) :PROC Hanoi ( 3, ‘A’, ‘B’, ‘C’) Solution algorithmique Déplacer n-1 disques de A vers B utilisant C Déplacer un disque de A vers C Déplacer n-1 disques de B vers C utilisant A
24
Trace d’exécution pour n=3 Hanoi (3, A, B, C) Hanoi (2, A, C, B) Hanoi (2, B, A, C) A Vers C B Vers C Hanoi (2, A, B, C) Hanoi (2, B, C, A) A Vers B Hanoi (2, C, A, B) Hanoi (2, A, B, C) A Vers C B Vers A C Vers B A Vers C A C, A B, C B, A C, B A, B C, A C
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.