Documente Academic
Documente Profesional
Documente Cultură
L A B O R A T O R
1a
Functii recursive
1. Functie recursiva pentru cautarea primei aparitii a unei valori date "b"
intr-un vector "a" de n elemente cu rezultat pointer: adresa valorii gasite
sau
NULL daca nu exista.
int* first (int b, int a[], int n);
2. Functie recursiva echivalenta cu functia de biblioteca "strchr":
char* strchr (char* s, char c);
Indicatie: Se cauta prima aparitie a lui "c" in sirul (vectorul) "s".
3. Functie recursiva pentru determinarea celui mai mare divizor comun
a doi intregi "a" si "b" pe baza relatiei de recurenta:
cmmdc(a,b) = cmmdc (b, a%b) pentru b > 0
Sa se adauge apoi afisarea argumentelor la fiecare apel al functiei.
4. Functie recursiva, de tip "long", pentru calculul combinarilor de
"n" luate cate "k" folosind relatia de recurenta :
C(n,k) =1 pentru n=k sau k=0
C(n,k) = C(n,k-1) * (n-k+1)/k
ptr k > 0 si k < n
Sa se adauge apoi numararea apelurilor functiei si afisarea lor in
"main", fara a folosi variabile externe functiilor (cu un parametru in plus).
5. Functie recursiva, de tip "long", pentru calculul combinarilor de
"n" luate cate "k" folosind relatia de recurenta :
C(n,k) =1 pentru n=k sau k=0
C(n,k) = C(n-1,k) + C(n-1,k-1) ptr k > 0 si k < n
Sa se adauge apoi numararea apelurilor functiei si afisarea lor in "main".
6. Functie pentru cautarea binara a unei valori date "b" intr-un vector
ordonat
"a" de n elemente distincte cu rezultat intreg: pozitia lui "b" in "a" sau -1
daca
"a" nu contine pe "b":
int bsearch (int b, int a[], int n);
Se va apela o functie recursiva de cautare binara cu 4 argumente:
int bs (int b, int a[], int inf, int sup);
"inf","sup" sunt prima si ultima pozitie dintr-un subvector din 'a' unde se
cauta 'b'
7. Functie recursiva pentru calculul valorii unui polinom cu n coeficienti
P(n)=c[0]*x^(n-1)+c[1]*x^(n-2)+...+c[n-2]*x+c[n-1] pentru o valoare data x:
int valpol( int c[], int n, int x) ;
Se va folosi relatia de recurenta:
P(n) = P(n-1)*x + c[n-1] ptr n>0
si P(0)=0
// n=lungime sir s