Vous êtes sur la page 1sur 4

Chap 2 : La rcursivit

Classe : 4

me

SI

LA RECURSIVITE
I- Introduction
Activit 1 : Ecrire une analyse, un programme permettant de dterminer et d'afficher la somme de n premiers entiers. Solution1 Algorithme du PP : 0. Dbut calcul 1. Rpter Lire (n) Jusqu n > 0 2. crire (Fn somme (n)) 3. Fin calcul Algorithme de la fonction somme : 0. Dbut fonction somme (n : entier) : entier 1. s 0 Pour i de 1 n Faire Ss+i Fin Pour 2. somme S 3. Fin somme Peut-on trouver une autre solution (ou autre mthode) pour rsoudre ce mme problme? Solution2 Algorithme rcursif de la fonction somme : 0. Dbut fonction somme (n : entier) : entier 1. si n = 0 alors Somme 0 Sinon Somme n + Fn somme (n-1) Fin si 2. Fin somme Solution en Pascal : Program calcul; uses wincrt; var n: integer; function somme (n : integer):integer; begin if n=0 then somme:=0 else somme:=n+ somme (n-1); end;
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

BEGIN{PP} repeat write(' Entrer n : ');readln(n); until n >0; write ('La somme des ', n,' premiers entiers = , somme(n)); END.
page-1/4-

Chap 2 : La rcursivit

Classe : 4

me

SI

Activit 2 Ecrire une analyse, un programme permettant de dterminer et d'afficher le PGCD de deux entiers positifs non nuls a et b. 1re mthode : Mthode dEuclide PGCD (a, b) = PGCD (b, a mod b)

avec a>b

Exemple : PGCD (36,27) = PGCD (27,9) = PGCD (9,0) = 9 2me mthode : Mthode par diffrence PGCD (a, b) = PGCD (a-b, b) si a > b = PGCD (a, b-a) =a

si a < b si a =b

Exemple : PGCD (36,27) = PGCD (9,27) = PGCD (9,18) = PGCD (9,9) = 9

Analyse du PP Rsultat : Ecrire ("le PGCD entre ", a, " et ", b, "est", FN PGCD (a, b)) Traitement : PGCD est une fonction rcursive permettant de calculer le plus grand commun multiple entre a et b Donnes : deux entiers positifs non nuls a et b. Analyse de la fonction PGCD (1re mthode) Rsultat : PGCD Traitement : Le rsultat de la fonction PGCD est obtenu comme suit : Un cas particulier : si b= 0 alors PGCD a Un cas gnral : sinon PGCD PGCD (b, a mod b) Analyse de la fonction PGCD (2me mthode) Rsultat : PGCD Traitement : Le rsultat de la fonction PGCD est obtenu comme suit : Un cas particulier : si a= b alors PGCD a Un 1er cas gnral : sinon si a > b alors PGCD PGCD (a b, b) Un 2me cas gnral : si a < b alors PGCD PGCD (a, b-a)
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

Algorithme du PP: 0. Dbut calcul_PGCD 1. rpter lire (a, b) jusqu' (a > 0) et (b > 0) 2. Ecrire ("le PGCD entre ", a," et ", b, FN PGCD (a, b)) 3. Fin calcul_PGCD Algorithme de la fonction PGCD: 0. Dbut fonction PGCD (a, b : entier) : entier 1. Si b = 0 alors pgcd a Sinon pgcd pgcd (b, a mod b ) Fin si 2. Fin PGCD

Algorithme de la fonction PGCD: 0. Dbut fonction PGCD (a, b : entier) : entier 1. Si a = b alors pgcd a Sinon Si a > b alors pgcd pgcd (a- b, b) Sinon pgcd pgcd (a, b-a) Fin si 2. Fin PGCD

page-2/4-

Chap 2 : La rcursivit

Classe : 4

me

SI

II- Dfinition et principe :


1- Dfinition Tout objet est dit rcursif sil se dfinit partir de lui-mme. Ainsi, un sous programme est dit rcursif sil comporte, dans son corps, au moins un appel lui mme. 2- Principe Un programme rcursif doit : Traiter un ou plusieurs cas particuliers reprsents par une ou plusieurs conditions darrt, sinon il tournera indfiniment. Traiter un ou plusieurs cas gnraux reprsents par des appels rcursifs. Chaque fois quun programme rcursif est appel (par lui mme), un ou plusie urs des paramtres qui lui sont transmis doivent arriver la condition darrt. 3- Syntaxe Dbut fonction nom_fonction_recursive (paramtres formels : types) : type [ Instructions ] Si TEST_D'ARRET Alors Nom_fonction_recursive Instructions du point d'arrt Si Non (*----- excution *) Nom_fonction_recursive FN nom_fonction_recursive (paramtres changs) [ Instructions ] Fin Si [ Instruction ] Fin nom_fonction_recursive 4- Remarques 1) La limite technique de la rcursivit est la mmoire stockant les donnes intermdiaires des sous-programmes (pile).cette dernire dborde lorsque le nombre des appels devient important. 2) Les fonctions rcursives sont appeles depuis leur propre corps, soit directement, soit indirectement : directement : p appelle directement p Indirectement : p appelle p1, p1 appelle p2, p2, pn-1 appelle pn, pn appelle p 3) La rcursivit est dite croise lorsque plusieurs fonctions et procdures sappellent mutuellement. Activit 3 Ecrire une analyse, un programme permettant de dterminer et d'afficher sous la forme des sommes, le produit de deux entiers positifs non nuls a et b.

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-3/4-

Chap 2 : La rcursivit

Classe : 4

me

SI

Analyse du PP Rsultat : Ecrire ("le Produit entre ", a, "et", b, "=", FN Produit (a, b)) Traitement : Produit est une fonction rcursive permettant de calculer a*b (par somme) Donnes : deux entiers positifs non nuls a et b

Algorithme du PP: 0. Dbut calcul_Produit 1. rpter lire (a, b) jusqu' (a > 0) et (b > 0) 2. Ecrire ("le Produit entre ", a," et ", b,"=", FN Produit (a, b)) 3. Fin calcul_ Produit

Analyse de la fonction Produit Rsultat : Produit Traitement : Le rsultat de la fonction Produit est obtenu comme suit : Un cas particulier : si b= 0 alors Produit 0 Un cas gnral : sinon Produit a + Produit (a, b-1) Activit 4

Algorithme de la fonction Produit: 0. Dbut fonction Produit (a, b : entier) : entier 1. Si b = 0 alors Produit a Sinon Produit a + Produit (a, b-1) Fin si 2. Fin Produit

Ecrire un programme Pascal qui saisit une chane de caractres et l'affiche sous la forme d'un triangle comme indiqu ci-dessous. Exemple : Si la chane saisie est "INTERNET", on aura : I IN INT INTE INTER INTERN INTERNE INTERNET

Algorithme du PP: 0. Dbut Internet 1. Ecrire ("donner une chaine "), lire (st) 2. Proc Affiche (st) 3. Fin Internet

Algorithme de la procedure Affiche: 0. Dbut Procedure Affiche (st :ch ) 1. Si long(st) <> 0 alors Proc Affiche (copy (st, 1, long (st)-1)) Ecrire (st) Fin si 2. Fin Affiche

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-4/4-

Vous aimerez peut-être aussi