Sunteți pe pagina 1din 3

TEST DE EVALUARE "RECURSIVITATE" Nr.1 1.

Precizai ce valori se vor afia, n ordine, n urma execuiei funciei recursive afiare, dac primul apel (cel din main) este afiare(2). void afisare( int k) { if(k<6) { cout<<2*k-1; afisare(k+1);}} 2.Se consider urmtoarea funcie: int ce( int i) { if(i<=1) return i; else ce(i-2)+i;} Ce valoare va returna ce(5) ? 3.Care este valoarea returnat de funcia urmtoare, la apelul f(6) ? int f( int x) { if(x<=0) return 3; else f(x-1)*2; } 4.Se consider funcia definit recursiv: int ce( int i) { if (i==0) return 0; else ce(i-1)+2*i;} Ce valoare va returna ce(5) ? 5.Se consider funcia f de mai jos definit recursiv. Ce va returna f(7) ? int f( int i) { if (i==0) return 0; else if(i%2==0) f(i-1)+i; else f(i-1)-i;} 6.Alegei irul de numere afiate n urma execuiei programului urmtor: void A (int i) { if(i<4) {cout<<x-2; A(i+1); cout<<x+3;}} main() {x=5; A(1);} 7. Pentru programul urmtor, care dintre afirmaiile date sunt adevrate? #include<iostream.h> int n=5; u[]={8,3,1,7,5}; int calcul (int i, int &b) { if (i>=n) return b; else { if (u[i]>b) b=u[i]; return calcul (i+1,b);}} void main() { int b=0; cout<<calcul(1,b);} 8. Se consider subprogramul recursive. Precizai ce va fi afiat la apelul test(10)? void test (int n) { if ( n!=1 ) {cout<<n<<, ; if (n%2 ==0) test (n/2);

else test (3*n+1) }else cout<<1; } 9. Cte caractere * se vor afian urma executrii subprogramului de mai jos la apelul afis(1,1)? void afis(int i,int j) { if(i<=3) if(j<=i) { cout<<"*"; afis(i,j+1); } Else afis(i+1,1); 10. Fie funcia. Ce se va afia n urma apelului f(6)? Ce valoare ar trebui s primeasc la apel parametrul formal n pentru ca funia s returneze valoarea 26? int f(int n){ if(n==0) return 0; else if(n%2) return n+f(n-1); else return n/2+f(n-1);} II. 1.Fie doua siruri (cn) si (dn), nN definite recursiv astfel: c0=c; d0=d (c,d>0) cn=cn-2* dn-1; dn=(cn-1 +dn-1)/3 Scrieti un program care sa calculeze cn si dn ,pentru nN citit de la tastatura. Calculati c3 si d3 stiind ca c=1 si d=2. 2. a. Scriei o funcie recursiv care returneaz valoarea expresiei: E=1*4*7*...*(3n-2) b. scrieti o functie recursiva care calculeaza numarul cifrelor egale cu 2 ale lui n. 3. Fie functia void modif(int k,int v[20]) { if(k>0) { modif(k-1,v); if (v[k]%2==0) cout<<v[k]; }} void main() { int w[]={1,2,3,4,5,6};n=6;modif(n,w);} a. Ce se va afisa? b. Modificati functia atfel incat aceasta sa calculeze suma elementelor positive din sir.

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