miercuri, 26 mai 2010

STIATI CA:




Recursivitatea este una din notiunile fundamentale ale informaticii.Utilizarea frecventa a recursivitatii s-a facut dupa anii '80.Multe din limbajele de programare evoluate si mult utilizate(Fortran ,Cobol) nu permiteau scrierea programelor recursive.
In linii mari,recursivitatea este un mecanism general de elaborare a programelor .Ea a aparut din necesitati practice (transcrierea directa a formulelor matematice recursive) si reprezinta acel mecanism prin care un subprogram(procedura,functie) se autoapeleaza.
Mecanismul recursivităţii
-Care este mecanismul prin care programele se autoapelează? Să ne
amintim cum memorează programele parametrii transmişi: pentru memorarea parametrilor, subprogramele folosesc o zonă de memorie numită stivă.
-Memorarea parametrilor transmişi se face în ordinea în care aceştia figurează în antet: de la stânga la dreapta. Pentru parametrii transmişi prin valoare,se transmite valoarea, iar pentru cei transmişi prin referinţă se transmite adresa. În cadrul subprogramului, parametrii transmişi şi memoraţi în stivă sunt variabile. Numele lor este cel din lista parametrilor formali.
-Subprogramul lucrează cu datele aflate pe un anumit nivel al stivei
pentru variabilele transmise prin valoare, dar şi cu variabilele funcţiei
main(), dacă acestea sunt transmise prin referinţă.
-Există posibilitatea ca subprogramul să lucreze direct cu variabilele
globale fără ca acestea să fie transmise prin referinţă. După cum ştim
variabilele globale pot fi accesate din orice subprogram, dacă sunt declarate la începutul codului sursă.
-În cazul unui număr foarte mare de autoapelări, există posibilitatea ca segmentul de stivă să se ocupe total, caz în care programul se va termina cu eroare.
-Recursivitatea presupune mai multă memorie.
-O gândire recursivă exprimă concentrat o anumită stare, care se repetă la infinit. Această gândire se aplică în elaborarea algoritmilor recursivi cu o modificare esenţială: adăugarea condiţiei de terminare. În absenţa acestei condiţii nu se poate vorbi despre un algoritm deoarece aceştia sunt finiţi.