1 / 17

RECURSIVITATEA

- Proiect interdisciplinar -. RECURSIVITATEA. Random :. Alice Bătușariu Laura Dumitru Ioana Drasovean Anca Isailă. Prezentare general ă. Recursivitatea este una din noțiunile fundamentale ale informaticii. Utilizarea frecventă a recursivității s-a făcut după anii ’ 80.

Download Presentation

RECURSIVITATEA

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. - Proiect interdisciplinar - RECURSIVITATEA

  2. Random: • Alice Bătușariu • Laura Dumitru • Ioana Drasovean • Anca Isailă

  3. Prezentare generală • Recursivitatea este una din noțiunile fundamentale ale informaticii. Utilizarea frecventă a recursivității s-a făcut după anii ’80. • Definiție:Recursivitatea este un mecanism general de elaborare a programelor. Ea constă în posibilitatea ca un subprogram să se autoapeleze.

  4. Recursivitatea în matematicăMetoda 1(Matematică) • Enunțul problemei“Iepurele” Plecând de la o singură pereche de iepuri și știind că fiecare pereche de iepuri produce în fiecare lună o nouă pereche de iepuri, care devine “productivă” la vârsta de 1 lună, calculați câte perechi de iepuri vor fi după n luni. (se consideră că iepurii nu mor în decursul respectivei perioade de n luni) • Formula de calcul Fn+1 = Fn + Fn-1; F1=1; F2=1. Ex: F1=1, F2=1 => F3= 1+1 => F3=2;

  5. Metoda 2 (Informatică) • program fibonacci; var v:array[1..100] of integer; n,k,i,a,b:integer; begin writeln('Introduceti numarul pana la care doriti sa se afiseze valori din sirul lui Fibonacci: n= ‘ ); read(n); a:=1; b:=1; v[1]:=1;v[2]:=1; k:=2; while v[k]<=n do begin k:=k+1; b:=a+b; v[k]:=b; k:=k+1; a:=a+b; v[k]:=a; end; for i:=1 to k-1 do writeln(v[i]); if n=v[k-1] then writeln('Numarul dat ESTE in sirul lui Fibonacci!') else writeln('Numarul dat NU este in sirul lui Fibonacci!'); End.

  6. Probema putere: var n:integer; put:longint; function putere (n:integer):longint; var i:integer; p :longint; begin p:=n; for i:= 1 to n-1 do p:=p*n; putere:=p; end; begin {pp} readln(n); put:=putere(n); writeln (put); end.

  7. Fractali în natură

  8. Film Filmul Alt filmulet

  9. Recursivitateaîn informatică • Recursivitatea este folosită în informatică pentru translatarea problemelor din matematica în programe speciale care să calculeze totul mult mai uşor decât ar putea omul să o facă prin alte metode.

  10. Execuţiaapelurilor recursive • După cum ştim, în limbajul Pascal subprogramele sunt de două tipuri: funcţii şi proceduri. • Oricare ar fi tipul subprogramului, acesta se poate autoapela, însă modul în care se realizează autotransferul diferă.

  11. Realizareaautoapelului • În cazul procedurilor apelul procedurii respective, din interiorul ei. • În cazul funcţiilor o operaţie de atribuireprin care numele funcţiei trebuie să figureze în partea dreaptă a operatorului de atribuire

  12. Aplicaţii recursive • Sa se scrie o functie recursiva care calculeaza n! • Sa se scrie o functie recursiva care calculeaza produsul a*b (ca fiind o adunare repetata) • Sa se scrie o functie recursiva care calculeaza a^b • Sa se descompuna un numar in suma de doua numere Ex 11 se descompune in: 1+10, 2+9, 3+8, 4+7, 5+6 Expresii:     • 1*2+2*3+3*4+4*5 • 1+3+5+7+…  • 1*4*7*10*… • 2*4*6*8*…. • 1x2+2x3+3x4+....+nx(n+1)½+2/3+3/4+......+n/(n+1) •   (1+2)x(2+3)x(3+4).....x(n+n+1)

  13. Implementare • Dați click pe imagine pentru a vedea fișierul Pascal cu rezolvarea problemei “Al n-lea termen”:

  14. CONCLUZII Un algoritm recursiv are la baza un mecanism de gandire diferit de cel cu care ne-am obisnuit deja. Atunci cand scriem un algoritm recursiv este suficient sa gandim ce se intampla la un anumit nivel pentru ca la orice nivel se intampla exact acelasi lucru. Un algoritm recursiv corect trebuie sa se termine ,contrar programul se va termina cu eroare si nu vom primi rezultatul asteptat.Conditia de terminare va fi pusa de programator. Un rezultat matematic de excepție afirma ca pentru orice algoritm iterativ exista si unul recursiv echivalent si invers,pentru orice algoritm recursiv exista si unul iterativ echivalent. Recursivitatea indirecta are loc atunci când o procedura (funcție) apelează o alta procedura (funcție),care la rândul ei o apelează pe ea.

  15. Avantaje • soluții mai clare pentru probleme si • lungimi mai mici pentru program • avantajul principal al recursivității este scrierea mai compacta si mai clara a funcțiilor care exprima procese de calcul recursive. Obs. În aceasta clasa de procese intra cele generate de metodele de căutare cu revenire (“backtracking”) si metodele de divizare (“divide et impera”).

  16. Dezavantaje • timp mai mare de execuție • spațiu de memorie alocata mai mare. Observatie Atunci când programul recursiv poate fi transformat intr-unul iterativ să se facă apel la cel din urma.

  17. Bibliografie • www.youtube.com • www.google.ro • www.infostone.com • http://news.deviantart.com/article/81499/ • http://my.opera.com/marusca/blog/show.dml/2917508

More Related