Documente Academic
Documente Profesional
Documente Cultură
Principiul de execuţie
Stiva este o succesiune ordonată de elemente, delimitată prin două capete, în care adăugarea şi
eliminarea elementelor se poate face pe la un singur capăt, numit vârful stivei. O stivă care nu conţine nici un
element stivă vidă. În orice moment, putem scoate din stivă numai elementul care a fost introdus ultimul,
motiv pentru care vom spune că stiva funcţionează după principiul LIFO (Last In First Out – “Ultimul Intrat
Primul Ieşit”)
Limbajul C dispune de propria stivă internă, gestionată de către compilator. Ea ocupă o parte dein
memoria internă rezervată programului, iar adresele de început şi de sfârşit ale zonei de stivă sunt reţinute în
regiştrii microprocesorului.
Orice subprogram foloseşte această stivă.
În cazul subprogramelor recursive, stivă internă proprie a limbajului are o importanţă deosebită. La
fiecare nou autoapel al unui subprogram recursiv, se salvează pe stiva internă variabilele locale şi parametrii
transmişi prin valoare ai acestuia (un subprogram recursiv este şi modul apelant şi modul apelat în acelaşi
timp). Valorile salvate pe stivă nu numai că sunt restaurate în ordine inversă la revenirea din lanţul de apeluri
recursive, dar sunt şi efectiv folosite în formarea rezultatului final.
Tipuri de recursivitate
Pentru a putea fi executat, orice subprogram (nerecursiv sau recursiv) trebuie să fie declarat înaintea
modulului apelant.
Situaţia ar fi fost una similară,dacă am fi scris procedurile în ordinea B,A. În acest caz trebuia
declarată anticipat procedura A.
g(x)+1 , x<=3
Iată aici o situaţie aparte, în care funcţiile sunt recursive, însă, de data aceasta, una prin intermediul
celeilalte. Calculul, de exemplu, a lui f(2) decurge astfel:
f(2)=g(2)+1=(f(3)+2*2)+1=f(3)+5=(g(3)+1)+5=g(3)+6=(f(4)+2*3)+6=f(4)+12=42+12=16+12=28.