Documente Academic
Documente Profesional
Documente Cultură
Algoritmi și tehnici de
programare
Recursivitate. Recapitulare
Algoritmi recursivi Funcție recursivă:
Recursivitate simplă autoapel (cel puțin unul)
(algoritmi uni-recursivi) Recursivitate directă
Recursivitate multiplă ▪ Simplă
(algoritmi multi-recursivi) ▪ Multiplă
Elemente obligatorii: Recursivitate mutuală
▪ Formulă de start (o formulă / ▪ Declarare anticipată a
mai multe) funcțiilor
▪ Formulă recursivă
Avantaje și dezavantaje
Consum de memorie
Timp de procesare
Ușurința în proiectare/implementare
Recursivitate. Funcții recursive
apelator
fact(3) t1
Memorie ocupată
fact(3)
3*fact(2) t2
fact(2)
Stack 2 * fact(1) t3
Return address
t1 3 t8 fact(1)
f 1 * fact(0) t4
Return address
t2 2 t7
f fact(0)
Return address 1
t3 1 t6
f 1*1=1 t5
Return address
t4 0 t5
f 2*1=2 t6
3*2=6 t7
6 t8
Recursivitate, funcții recursive
fib( 4 )
fib( 1 )
fib( 3 )
fib( 2 ) 1
fib( 0 )
fib( 1 )
1
1 2
fib( 0 )
5
1
2
fib( 1 )
1
3
fib( 2 )
Recursivitate, funcții recursive
Constituire soluție
Recursivitate, funcții recursive
Calculul sumei cifrelor unui număr – rezultat returnat prin numele funcției
unsigned SumCifRec1(unsigned n)
{ int r;
if (n / 10 == 0) r=n;
return n;
else
return n % 10 + SumCifRec1(n / 10);
}
r= n % 10 + SumCifRec1(n /
return r; 10);;
Recursivitate, funcții recursive