7/18/2019 L1a
http://slidepdf.com/reader/full/l1a55cf864f550346484b965ac5 1/2
Structuri de Date (1CC)
L A B O R A T O R 1a
Functii recursive
1. Functie recursiva pentru cautarea primei aparitii a unei valori date ""
intr!un vector "a" de n elemente cu reultat pointer# adresa valorii $asite
sau
%&LL daca nu e'ista.
int irst (int * int a+,* int n)-
. Functie recursiva ec/ivalenta cu unctia de ilioteca "strc/r"#
c/ar strc/r (c/ar s* c/ar c)-
0ndicatie# Se cauta prima aparitie a lui "c" in sirul (vectorul) "s".
. Functie recursiva pentru determinarea celui mai mare divior comun
a doi intre$i "a" si "" pe aa relatiei de recurenta#
cmmdc(a*) 2 cmmdc (* a3) pentru 4 5 Sa se adau$e apoi aisarea ar$umentelor la iecare apel al unctiei.
6. Functie recursiva* de tip "lon$"* pentru calculul cominarilor de
"n" luate cate "7" olosind relatia de recurenta #
C(n*7) 21 pentru n27 sau 725
C(n*7) 2 C(n*7!1) (n!781)97 ptr 7 4 5 si 7 : n
Sa se adau$e apoi numararea apelurilor unctiei si aisarea lor in
"main"* ara a olosi variaile e'terne unctiilor (cu un parametru in plus).
;. Functie recursiva* de tip "lon$"* pentru calculul cominarilor de
"n" luate cate "7" olosind relatia de recurenta #
C(n*7) 21 pentru n27 sau 725
C(n*7) 2 C(n!1*7) 8 C(n!1*7!1) ptr 7 4 5 si 7 : n
Sa se adau$e apoi numararea apelurilor unctiei si aisarea lor in "main".
<. Functie pentru cautarea inara a unei valori date "" intr!un vector
ordonat
"a" de n elemente distincte cu reultat intre$# poitia lui "" in "a" sau !1
daca
"a" nu contine pe ""#
int searc/ (int * int a+,* int n)-
Se va apela o unctie recursiva de cautare inara cu 6 ar$umente#
int s (int * int a+,* int in* int sup)-
"in"*"sup" sunt prima si ultima poitie dintr!un suvector din =a= unde secauta ==
>. Functie recursiva pentru calculul valorii unui polinom cu n coeicienti
?(n)2c+5,'@(n!1)8c+1,'@(n!)8...8c+n!,'8c+n!1, pentru o valoare data '#
int valpol( int c+,* int n* int ') -
Se va olosi relatia de recurenta#
?(n) 2 ?(n!1)' 8 c+n!1, ptr n45 si ?(5)25
7/18/2019 L1a
http://slidepdf.com/reader/full/l1a55cf864f550346484b965ac5 2/2
. Functie recursiva ec/ivalenta cu unctia standard "atoi" dupa modelul
unctiei "valpol"#
int atoin(c/ars* int n)- 99 n2lun$ime sir s
0ndicatie# Se va olosi aceeasi metoda de calcul din unctia "valpol" deoarece
16 2 115@ 8 15@ 8 15@1 2 615@5 deci ?(6) cu '215
. Functie recursiva ec/ivalenta cu unctia standard "atoi" care sa apelee
o varianta a unctiei "valpol" (modiicata astel ca reultatul sa ie
corect).
int atoir (c/ars)- 99 conversie din sir ASC00 in "int"
15. Functie recursiva pentru aisare unui sir in ordine inversa#
void rprint (c/ar s)-
Functie recursiva pentru crearea unui sir t cu caractereledin s in
ordine
inversa# void reverse (c/ars* c/art)-