RECURSIVITATEA
Download
Report
Transcript RECURSIVITATEA
- Proiect interdisciplinar -
RECURSIVITATEA
Numele echipei:The Magic Group
Prezentare generala
-notiunea de recursivitate din programare deriva in mod
natural din notiunea de matematica cunoscuta sub
numele de recurenta
-in viata de zi cu zi ne ofera de asemenea nenumerate
exemple
Aplicaţii
Recursivitatea este folosita pentru:
-creearea de sisteme biologice
-aflarea a orice de la cresterea populatiei la
bataile neregulate ale inimii
Recursivitatea in matematica
Enuntul problemei
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 o lună,
calculaţi câte perechi de iepuri vor fi după n luni.
Formula de calcul
fn+1 = fn + fn-1,
f1 = 1; (1)
f0 = 0.
Recursivitatea în natură
PLANTELE: - au aranjamentul frunzelor dispus
intr-o secventa Fibonacii in jurul tulpinei
COCHILIA : - s-a ajuns la concluzia ca aceasta
spirala a cochiliei urmareste dimensiunile
date de secventa lui Fibonacci.
CORPUL: - mana umana are 5 degete, fiecare
degat avand 3 falange separate prin 2
incheieturi care respecta sirul lu Fibonacci
Fractali
Recursivitatea in
informatica
Este un mecanism general de
elaborare a programelor. Ea consta in
posibilitatea ca un subprogram sa se
autoapeleze.
Realizarea autoapelului
In cazul functiilor
-autoapelul se realizeaza printr-o operatie de atribuire, operatia prin care
numele functiei trebuie sa figureze in partea dreapta a operatorului de
atribuire
Ex:
function suma(n:integer):integer;
begin
suma:=0;
if n<>0 then suma:=n+suma(n-1);
end;
begin
writeln(suma(7));
end.
Realizare autoapelului
In cazul procedurilor:
-autoapelul se realizeaza prin apelul procedurii respective, din interiorul ei.
Apelul se face la fel ca in cazul in care procedura este apelata din exterior.
Ex: procedure exemplu(n:integer);
begin
if n<>0 then
begin
writeln(n);
exemplu (n-1);
end;
end;
begin
exemplu(7);
end.
Execuţia apelurilor
recursive
Orice apel de subprogram are ca efect
salvarea pe stiva calculatorului a adresei de
revenire, a valorilor parametrilor transmisi
prin valoare si a adresei parametrilor
transmisi prin referinta precum si alocarea de
spatiu pe stiva pentru variabilele locale ale
subprogramului.
Aplicatii recursive
Enuntul problemei
Studiaza recursivitatea indirecta si realizeaza
programul care desenaza covorul cu unul
dintre modelele:
Implementare
Dati click pe imagine pentru a vedea fisierul
Pascal cu rezolvarea:
Dati click pe imagine pentru a rula programul:
CMMDC
Studiul modului de executie a apelurilor
recursive cu exemplificare pentru problema
CMMDC(a,b).
Dati click pe imagine pt. a viziona rezolvarea
problemei.
CONCLUZII
Cand utilizam un algoritm recursiv?
-atunci cand algoritmul care urmeaza sa fie implementat
descrie o notiune recurenta sau algoritmul in sine este
recursiv
-principalul avantaj al utilizarii tehnicii recursive este ca
permite o descriere concisa a algoritmului
Avantaje
-se realizeaza programe mai rapide
-se evita operatiile mult prea dese de
salvare pe stiva calculatorului
-se evita incarcarea calculatorului in
cazul apelurilor repetate
Dezavantaje
-in cazul unui nr. mare de autoapelari, exista posibilitatea ca
segmentul de stiva sa depaseasca spatiul alocat, caz in care
programul se va termina cu eroare.
-recursivitatea presupune mai multa memorie in comparatie cu
iterativitatea
Bibliografie
Internet
Manual de informatica clasa aX-a (tehnici si
programare PASCAL si C++): TUDOR SORIN