17
- Proiect interdisciplinar -

RECURSIVITATEA

Embed Size (px)

DESCRIPTION

- 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. - PowerPoint PPT Presentation

Citation preview

- Proiect interdisciplinar -

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.

Definiție: Recursivitatea este un mecanism general de elaborare a programelor. Ea constă în posibilitatea ca un subprogram să se autoapeleze.

Recursivitatea în matematicăMetoda 1 (Matematică)o 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)

o Formula de calculFn+1 = Fn + Fn-1;

F1=1; F2=1.

Ex: F1=1, F2=1 => F3= 1+1 => F3=2;

Metoda 2 (Informatică)

program fibonacci;

var v:array[1..100] of integer; n,k,i,a,b:integer;

beginwriteln('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 begink:=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. 

Probema putere:

var n:integer; put:longint;

function putere (n:integer):longint;

var i:integer; p :longint;beginp:=n;for i:= 1 to n-1 do p:=p*n;putere:=p;end;

begin {pp}readln(n);put:=putere(n);writeln (put);end.

Fractali în natură

Film

Filmul

Alt filmulet

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.

Execuţia apelurilor 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ă.

Realizarea autoapelului

În cazul procedurilor

apelul procedurii respective, din interiorul ei.

În cazul funcţiilor

o operaţie de atribuire prin care numele funcţiei trebuie să figureze în partea dreaptă a operatorului de atribuire

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)

Implementare

Dați click pe imagine pentru a vedea fișierul Pascal cu rezolvarea problemei

“Al n-lea termen”:

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.

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”).

Dezavantaje

timp mai mare de execuție

spațiu de memorie alocata mai mare.

ObservatieAtunci când programul recursiv poate fi transformat intr-unul iterativ să se facă apel la cel din urma.

www.youtube.com www.google.ro www.infostone.com http://

news.deviantart.com/article/81499/

http://my.opera.com/marusca/blog/show.dml/2917508

Bibliografie