L1b
-
Upload
leslie-nelson -
Category
Documents
-
view
222 -
download
0
description
Transcript of L1b
![Page 1: L1b](https://reader035.fdocumente.com/reader035/viewer/2022081809/55cf864f550346484b965ad8/html5/thumbnails/1.jpg)
Structuri de Date (1CC)
L A B O R A T O R 1b
Functii recursive
1. Functie recursiva pentru cautarea ultimei aparitii a unei valori date "b" intr-un vector "a" de n elemente cu rezultat pointer ( adresa valorii gasite ): int* last ( int a[], int n,int b); // NULL daca b nu exista in a
2. Functie recursiva echivalenta cu functia standard "strrchr": char* strrchr (char* s, char c); // ultima aparitie a lui c in s
3. Functie recursiva echivalenta cu functia standard "strcmp": int strcmp (char*a, char* b); // rezultat <0, ==0, >0
4. Functie recursiva echivalenta cu functia standard "strncmp": int strncmp (char*a, char* b,int n); // rezultat <0, ==0, >0
5. Functie recursiva echivalenta cu functia standard "strlen": int strlen (char* s);
6. Functie recursiva pentru ridicarea unui numar real la o putere intreagafolosind relatia a^n = a^(n-1)*a ptr n > 0 si a^0=1 Sa se verifice comparand cu rezultatul functiei standard "pow" din <math.h> Sa se adauge apoi afisarea numarului de apeluri ale functiei,in main,fara a folosi variabile externe (cu un argument suplimentar).
7. Functie recursiva pentru ridicarea unui numar real la o putere intreagafolosind relatiile: a^n = a^(n/2) * a^(n/2) ptr n par a^n = a^(n-1) * a ptr n impar Sa se adauge apoi afisarea numarului de apeluri ale functiei,in main,fara a folosi variabile externe (cu un argument suplimentar).
8. Numerele lui Fibonacci se calculeaza cu relatia de recurenta: F(n)= F(n-1)+F(n-2) si F(0)=F(1)=1;Sa se scrie o functie recursiva pentru calculul numarului F(n) si sa se verificeintr-un program care afiseaza primele 20 numere Fibonacci.Sa se afiseze si numarul de apeluri recursive pentru fiecare valoare n.
9. Functie pentru determinarea unei radacini reale a unei ecuatii f(x)=0,cunoscand intervalul [a,b] in care se afla aceasta radacina,prin metoda injumatatirii repetate a intervalului, iterativ si recursiv: double sol (double a,double b, double eps, double (*f)(double));Indicatie: Se calculeaza x=(a+b)/2 si se compara semnele valorilor f(a) sif(x); in functie de rezultat se face x=a sau x=b. Se iese din functie cand|b-a| < eps sau cand |f(x)| < eps . Se va verifica pentru ecuatia x*x - c = 0 cu a=0,b=c,eps=0.0001 si se
![Page 2: L1b](https://reader035.fdocumente.com/reader035/viewer/2022081809/55cf864f550346484b965ad8/html5/thumbnails/2.jpg)
va compara cu rezultatul functiei sqrt(c).
10. Functie recursiva echivalenta cu functia standard "itoa", dar cunumai doua argumente: char* itoa (int x, char* s); // implicit baza 10
Indicatie: Este o conversie in zecimal (cu caractere ASCII ptr cifre zecimale) itoa(x)= itoa(x/10) conc (x%10+'0') // "conc"=concatenare caracter la un sir