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