Sunteți pe pagina 1din 2

Structuri de Date (1CC) L A B O R A T O R 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); Indicatie: Se reduce succesiv dimensiunea vectorului in care se cauta, daca b nu este egal cu primul element din a. 2. Functie recursiva pentru cautarea primei aparitii a unei valori date "b" intr-un vector "a" de n elemente cu rezultat intreg: indicele valorii gasite sau -1 daca b nu exista in a. int firstx (int b, int a[], int i, int j); // cauta intre i si j 1a

3. 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". 4. 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. 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,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). 6. 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". 7. Functie pentru cautarea binara a unei valori date "b" intr-un vector ordon at "a" de n elemente distincte cu rezultat intreg: pozitia lui "b" in "a" sau -1 da ca "a" nu contine pe "b": int bsearch (int b, int a[], int n); Indicatii: - Se imparte succesiv vectorul in doua parti egale si se alege partea care conti ne pe b. - 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 caut a 'b'

8. 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: double valpol( double c[], int n, double x) ; Se va folosi relatia de recurenta: P(n) = P(n-1)*x + c[n-1] ptr n>0 si P(0)=0 Sa se scrie si varianta iterativa bazata pe aceeasi relatie (schema lui Horner). 9. Functie recursiva echivalenta cu functia standard "atoi" dupa modelul functiei "valpol": int atoin(char*s, int n); // n=lungime sir s Indicatie: Se va folosi aceeasi metoda de calcul din functia "valpol" deoarece 1234 = 1*10^3 + 2*10^2 + 3*10^1 = 4*10^0 deci P(4) cu x=10

S-ar putea să vă placă și