Sunteți pe pagina 1din 11

RECURSIVITATE

RECURSIVITATE

RECURSIVITATE

RECURSIVITATE

RECURSIVITATE

RECURSIVITATE

RECURSIVITATE

Sumar
1. Competene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Noiuni preliminare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Mecanismul recursivitii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Aplicaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Bibliografie i webografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1. Competene

Competene generale
implementarea algoritmilor ntr-un limbaj de programare
elaborarea algoritmilor de rezolvare a problemelor
aplicarea algoritmilor fundamentali n prelucrarea datelor
identificarea conexiunilor dintre informatic i societate

Competene specifice
utilizarea corect a subprogramelor predefinite i a celor definite de
utilizator
construirea unor subprograme pentru rezolvarea subproblemelor unei
probleme
aplicarea mecanismului recursivitii prin crearea unor subprograme
recursive (definite de utilizator)
compararea dintre implementarea recursiv i cea iterativ a aceluiai
algoritm
analiza problemei n scopul identificrii subproblemelor acesteia
descrierea metodei de rezolvare a unei probleme n termeni recursivi
3

2. Noiuni preliminare
Recursivitatea este un mecanism general de scriere a problemelor.
Un algoritm recursiv se caracterizeaz prin proprietatea c se
autoapeleaz, adic din interiorul lui se apeleaz pe el nsui.
Atunci cnd se scrie un algoritm recursiv este suficient s se gndeasc ce
se ntmpl la un anumit nivel, pentru c la orice nivel se ntmpl exact
acelai lucru.
ntr-un algoritm recursiv, pentru a realiza un anumit calcul sunt necesare
dou elemente:
1. o formul de recuren;
2. o valoare iniial cunoscut.

Noiuni preliminare
Un exemplu de recursivitate este n definirea formal a numerelor naturale
din cadrul teoriei mulimilor:
- baza recursiei este faptul c 1 este numr natural;
- n plus, orice numr natural are un succesor, care este de asemenea
un numr natural.
Un alt exemplu ar fi definirea conceptului de strmo al unei persoane:
- un printe este strmoul copilului (baza);
- prinii unui strmo sunt i ei strmoi (pasul de recursie).
recuren = repetiie, revenire;
formul de recuren = formul care exprim orice termen dintr-un ir, n
funcie de termenii precedeni;

Noiuni preliminare
Exemplu
S se calculeze suma primelor n numere naturale.
S(n)=1+2+3++(n-1)+n

Formula matematic:
// formula de recuren
//valoarea iniial cunoscut

S(n)=S(n-1)+n
S(0)=0

S(n) =

0,
pentru n = 0
S(n - 1) + n, pentru n > 0

S(4)=1+2+3+4=10

astfel:
S(4)=S(3)+4
S(3)=S(2)+3
S(2)=S(1)+2
S(1)=S(0)+1
S(0)=0

S(0)=0
S(1)=S(0)+1=0+1=1
S(2)=S(1)+2=1+2=3
S(3)=S(2)+3=3+3=6
S(4)=S(3)+4=6+4=10

3. Mecanismul recursivitii
Un algoritm recursiv se implementeaz folosind o funcie recursiv.
Se numete funcie recursiv o funcie care din corpul ei se apeleaz pe
ea nsi. Un subprogram se numete recursiv dac se autoapeleaz.
Orice funcie recursiv trebuie s ndeplineasc dou condinii:
1. s se poat executa cel puin o dat fr s se autoapeleze;
2. toate apelurile s se produc astfel nct s se tind spre ndeplinirea
condiiei de execuie fr apeluri.
Din afara funciei recursive, se face un prim apel la funcia recursiv, dup
care funcia se autoapelez de un anumit numr de ori.
Pentru orice algoritm iterativ exist un algoritm recursiv echivalent (rezolv
acceai problem) i invers, pentru orice algoritm recursiv exist unul
iterativ echivalent.

Noiuni preliminare
Exemplu
S se calculeze suma primelor n numere naturale.
S(n)=1+2+3++(n-1)+n

Mecanismul recursivitii
Autoapelarea se poate realiza n dou moduri:
1. direct n corpul funciei apare explicit un apel recursiv;
2. indirect n corpul funciei apare apelul unei alte funcii care, la rndul
su, apeleaz direct sau indirect funcia recursiv.
Recursivitate direct

Recursivitate indirect

void A()
{

A();

void A()
{

B();

void main()
{

A();

void B()
{

A();

}
void main()
{

A();

4. Aplicaii
Fi de lucru
Subprograme recursive recursive
Aplicaii subprograme reczursive

10

5. Bibliografie i webografie
1. Miloecsu M., Informatica. Manual pentru clasa a X, Editura Didactic
i Pedagogic, Bucureti, 2005
2. Mateescu G, Moraru P., Informatica. Manual pentru clasa a X, Editura
Donaris, Sibiu, 2006
3. Popescu C., Culegere de probleme de informatic, Editura DonarisInfo, Sibiu, 2002
4. Ministerul Educaiei, Cercetrii i Tineretului, Centrul Naional pentru
Curriculum i Evaluare n nvmntul Preuniversitar, Proba scris la
informatic. Examenul de bacalaureat Variante (1-100) , Bucureti
2008
5. http://ro.wikipedia.org/wiki/Recursivitate
6. http://en.wikipedia.org/wiki/Recursion

11