Sunteți pe pagina 1din 2

Nume i prenume__________________________________________________ __________10 MI 21.02.2012 Test - Recursivitate 1.

. (1p) Fie funcia: void ex(int n) { if(n) { ex(n-1); printf("%d ",n); } } 1.1 Ce se va afia pentru n=4? a) 1234 c) 4444 b) 4321 d) 1111 2. (1 p) Fie funcia: 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); } 2.1 Ce se va afia n urma apelului f(6)? a) 16 c) 18 b) 15 d) 12

1.2 Cte apeluri ale funciei ex au loc pentru n=5? a) 4 c) 3 b) 5 d) 6

2.2 Ce valoare ar trebui s primeasc la apel parametrul formal n pentru ca funia s returneze valoarea 26? (R 8)

3. (0.7p) Se consider funcia suma, definit mai jos. Ce valoare are suma(11)? int suma(int x) { if(x==1) return 0; else if(x%2==0) return suma(x-1)+(x-1)*x; else return suma(x-1)-(x-1)*x; } 4. (0.7p) Se consider urmtorul subprogram recursiv: int joc(int a,int b) { printf("%d ",a); if(a<=3) { printf("%d ",b); y++; return joc(a+1,b)+1; } else return 0; } Ce valori se vor afia n urma apelului joc(2,1)? a) 2 1 3 2 4 2 c) 2 1 3 1 4 2 b) 2 1 3 2 4 d) 1 1 1 2 1

R: -60

5. (1p) Se consider urmtorul subprogram iterativ. Realizai un subprogramul recursiv corespondent al acestuia. void sub(int n) void sub(int n) {int i; { for(i=n;i>=1;i--) if(n>0) printf("%d ",i); { for(i=1;i<=n;i++) printf(%d ,n); if(i%3==0)printf("%d ",i); sub(n-1); } Ex: pentru n=7 se va afia 765432136
} if(n%3==0) printf(%d ,n); }

6. (0.7p) 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) a) 3 b) 6 { printf("*"); c) 5 d) 10 afis(i,j+1); } else afis(i+1,1); } 7. (0.7p) Ce se va afia n urma executrii urmtorului subprogram recursive pentru apelul tipar(8)? void tipar(int n) {int i; if(n) R: 6 3 2 4 5 7 8 if(n%3==0) {printf("%d ",n); tipar(n+1); } else {tipar(n-2); printf("%d ",n); } } 8. (0.5p fiecare) Scriei cte un subprogram recursiv pentru calculul: a) b) Calculul celui de-al n-lea termen al irului definit prin urmtoarea relaie de recuren:

{ c) d) e) f) Suma cifrelor impare ale unui numr ntreg transmis ca parametru Produsul divizorilor pari ai unui numr natural Cel mai mare divizor comun a dou numere naturale Cifra maxim a unui numr natural