1 / 10

Recursivitate

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

deidra
Download Presentation

Recursivitate

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursivitate

  2. 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ţă.

  3. Exemple de recurenţe matematice • 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

  4. Exemple de recurenţe matematice Ş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>2 datorate 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.

  5. Proiectarea unui algoritm recursiv În programare, recursivitatea se realizează prin autoapelul unui subprogram. Reguli fundamentale Trebuie să existe cazuri elementare care se pot rezolva direct Pentru cazurile care nu se pot rezolva direct recursivitatea trebuie să progreseze către un caz elementar

  6. Exemple de proiectare a unor algoritmi recursivi 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 = 0 an = a * an-1 dacă n ≠ 0

  7. Exemple de proiectare a unor algoritmi recursivi 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ă

  8. Exemple de proiectare a unor algoritmi recursivi 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.

  9. Exemple de proiectare a unor algoritmi recursivi Î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 b c.m.m.d.c.(a,b) = c.m.m.d.c.(b,a mod b) dacă a nu divide pe b

  10. Exemple de proiectare a unor algoritmi recursivi Subprogram CMMDC (a , b) Dacă a mod b=0 atunci CMMDC:=b altfelCMMDC:=CMMDC(b,a mod b) Sfârşit dacă

More Related