Recursivitatea reprezinta o tehnica fundamentala in programare, prin care o functie se autoapeleaza pentru a rezolva o problema prin descompunerea acesteia in subprobleme mai mici, similare cu problema originala. O functie recursiva trebuie sa contina cel putin o conditie de oprire (caz de baza) si un apel recursiv care aduce problema mai aproape de cazul de baza. Fara caz de baza, functia va rula la infinit, generand o eroare de tip stack overflow.
In contextul programarii, recursivitatea este adesea utilizata pentru parcurgerea arborilor, sortare (QuickSort, MergeSort), calculul factorialului, sirul lui Fibonacci, sau rezolvarea problemelor de tip divide et impera. Avantajele includ scrierea unui cod mai concis si mai usor de inteles, in special pentru structuri de date ierarhice. Dezavantajele pot fi consumul mare de memorie (stack) si timpul de executie mai lent fata de solutii iterative, din cauza overhead-ului apelurilor de functii.
In programare, fiecare apel recursiv genereaza un nou cadru pe stiva de executie, care contine variabilele locale si adresa de return. Cand conditia de oprire este indeplinita, functia returneaza un rezultat si cadrele sunt sterse treptat. Este important sa se inteleaga ca orice solutie recursiva poate fi transformata intr-una iterativa (folosind stive sau bucle), dar uneori simplitatea solutiei recursive este preferabila.
In Bacalaureat, elevii trebuie sa stie sa scrie functii recursive simple (factorial, suma cifrelor, cmmdc) si sa analizeze complexitatea acestora. De asemenea, este important sa inteleaga notiunea de backtracking, care este o metoda recursiva de cautare sistematica a solutiilor. Pentru a deveni proficienti, recomand exersarea implementarii recursive a unor algoritmi clasici si analiza manuala a stivei de apeluri.
Concepte cheie: Caz de baza (baza recursivitatii), Autoapelul functiei, Stiva de apeluri (call stack), Divide et impera (impartirea problemei in subprobleme), Transformarea recursiv-iterativ
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.