Recursivitate

10
Recursivitate

description

Recursivitate. No ţiunea de recursivitate. O noţiune este definită recursiv dacă în cadrul definiţiei apare noţiunea care se defineşte Ex : un descendent al unei persoane este un copil al său sau un descendent al unui copil al său - PowerPoint PPT Presentation

Transcript of Recursivitate

Page 1: Recursivitate

Recursivitate

Page 2: Recursivitate

Noţiunea de recursivitate

O noţiune este definită recursiv dacă în cadrul definiţiei apare noţiunea care se defineşte

Ex: un descendent al unei persoane este un copil al său sau un descendent al unui copil al său

Noţiunea de recursivitate din programare derivă din noţiunea matematică cunoscută sub numele de recurenţă.

Page 3: Recursivitate

Exemple de recurenţe matematice

1. Definiţia numerelor naturale conform axiomelor lui Peano:

 • 1 este număr natural.• orice succesor al unui număr natural este un număr

natural

Page 4: Recursivitate

2. Şirul lui Fibonacci Începând cu anul 1202, apare exprimarea şirului:     1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ... conform

formulei: f1=1, f2=1,

fi= fi-1+ fi-2 pentru i>2datorate lui Leonardo da Pisa fiul lui Bonaccio (ca urmare a

formulării unei probleme privind înmulţirea iepurilor).

Primul termen este 0, următorii doi termeni ai şirului sunt 1, iar fiecare termen de după, este egal cu suma ultimilor 2 termeni ce-l preced.

Exemple de recurenţe matematice

Page 5: Recursivitate

În programare, recursivitatea se realizează prin autoapelul unui subprogram.

Reguli fundamentale

1. Trebuie să existe cazuri elementare care se pot rezolva direct

2. Pentru cazurile care nu se pot rezolva direct recursivitatea trebuie să progreseze către un caz elementar

Proiectarea unui algoritm recursiv

Page 6: Recursivitate

Ex 1: Să se descrie un subprogram recursiv ce calculează an (a la puterea n), a este un număr real iar n este număr natural.

Formula recurentă de calculare a funcţiei putere este:

1 dacă n = 0an = a * an-1 dacă n ≠ 0

Exemple de proiectare a unor algoritmi recursivi

Page 7: Recursivitate

Această formulă se poate rescrie:1 dacă n = 0

Putere(a,n) = a * Putere(a,n-1) dacă n ≠ 0

Un subprogram recursiv este:

Subprogram Putere(a,n) {returnează un număr real}Dacă n = 1 atunci Putere:=1

altfel Putere:=a * Putere(a,n-1)Sfârşit dacă

Exemple de proiectare a unor algoritmi recursivi

Page 8: Recursivitate

Ex 2: Să se descrie un subprogram recursiv ce calculează cel mai mare divizor comun a două numere naturale conform algoritmului lui Euclid

Dacă formula recurentă nu este dată, aceasta va trebui să fie dedusă pornind de la unul sau mai multe exemple concrete.

Fie a = 480 şi b = 220 cele două numere date.

Exemple de proiectare a unor algoritmi recursivi

Page 9: Recursivitate

În termeni recursivi putem scrie:

c.m.m.d.c.(480,220) = c.m.m.d.c.(220,40) = cmmdc(40,20) = 20

Prin generalizare se obţine:

b dacă a divide pe bc.m.m.d.c.(a,b) = c.m.m.d.c.(b,a mod b) dacă a nu divide pe b

Exemple de proiectare a unor algoritmi recursivi

Page 10: Recursivitate

Subprogram CMMDC (a , b) Dacă a mod b=0 atunci CMMDC:=b

altfel CMMDC:=CMMDC(b,a mod b)

Sfârşit dacă

Exemple de proiectare a unor algoritmi recursivi