Sunteți pe pagina 1din 10

RECURSIVITATE

Itemii urmtori sunt preluai din variantele de bacalaureat 2009.


1. Se consider subprogramul f definit alturat. Ce valoare are f(250)?
intf(intx)
{
if(x%3==0)return0;
elsereturn1+f(x/3);
}
2. Se consider subprogramul f definit alturat. Ce valoare are f(5)? Dar f(100)?
longf(intn)
{
if(n<0)return0;
elsereturnf(n2)+n;
}
3. Funcia f are definiia alturat. Dac f(x) are valoarea 10100, care este valoarea lui x?
longf(intn)
{
if(n<=0)return0;
elsereturnf(n1)+2*n;
}
4. Subprogramul f are definiia alturat. Ce valoare are f(4)? Dar f(11)?
intf(intx)
{if(x<1)return1;
elsereturnf(x3)+1;
}
5. Subprogramul f are definiia alturat. Ce valoare are f(6,5)? Dar f(5,10)?
intf(intx,inty)
{if(x==y)returnx;
elseif(x<y)returnf(x+1,y1);
elsereturnf(x1,y);
}
6. Subprogramul f are definiia alturat. Ce valoare are f(3)? Dar f(10)?
intf(intx)
{if(x==0)return0;
elsereturnf(x1)+2;}
7. Subprogramul f are definiia alturat. Ce valoare are f(7)? Dar f(100)?
intf(intx)
{if(x%6==0)returnx;
elsereturnf(x1);
}
8. Pentru definiia alturat a subprogramului f, ce valoare are f(3)? Dar f(8)?
intf(intx)
{
if(x<=4)returnx*x3;
returnf(x3)+4;
}

9. Pentru definiia alturat


Dar sc(901324)?
intsc(longx)
{
if(x<10)returnx;
returnsc(x/10)+x%10;
}

subprogramului sc,

stabilii

ce

valoare

are sc(10).

10. Considerm subprogramul f definit alturat. Ce valoare are f(7,11)? Dar f(11,7)?
intf(intx,inty)
{
if(x<=y)returnxy;
returnf(yx,x1)+3;
}
11. Subprogramul scif returneaz suma cifrelor unui numr natural transmis ca parametru.
Care este valoarea expresiei scif(scif(518)+scif(518))?
12. Se consider definit subprogramul f .
Scriei dou valori naturale, x1 i x2 (x1x2, x1<12 i x2<12) pentru care f(x1)=f(x2).
intf(inti)
{
if(i>12)return1;
elsereturn1+f(i+2);
}
13. Subprogramul re este definit alturat. Ce valoarea are re(1)? Dar re(14)?
intre(inti)
{
if(i<9)return3+re(i+2);
else
if(i==9)return2;
elsereturn1+re(i1);
}
14. Subprogramul f este definit alturat.
Ce valoare are f(8,4)?
intf(intx,inty)
{
if(x<y)return1+f(x+1,y);
if(y<x)return1+f(y+1,x);
return1;
}
15. Funcia f are definiia alturat:
a) Ce valoare are f(16)?
b) Scriei cea mai mare valoare de dou cifre pe care o poate avea n astfel nct f(n) s fie egal
cu 2.
intf(intn)
{if(n<=0)return1;
if(n%2==0)return0;
if(n%3==0)return0;
return1+f(n10);
}

16. Funcia f are definiia alturat.


a) Ce valoarea are f(17)?
b) Ce valoare are f(22)?
intf(intn)
{if(n<=9)return0;
if(n%4==0)return0;
return1+f(n3);
}
17. Pentru subprogramul suma definit alturat, scriei valoarea expresiei suma(5,4).
intsuma(inta,intb)
{if(a==0&&b==0)return0;
elseif(a==0)return1+suma(a,b1);
elsereturn1+suma(a1,b);
}
18. Se consider subprogramul, f, definit alturat.
a. Ce valoare are f(100)?
b. Scriei o valoare pentru x astfel nct f(x)=1
intf(intn)
{if(n==0)return0;
elsereturnn%2+f(n/2);
}
19. Funcia F are definiia alturat. Ce valoare are F(5)?
intF(intx)
{if(x!=0)returnx+F(x1);
else
returnx;
}
20. Funcia F are definiia alturat. Ce valoare are F(18)?
intF(intx){
if(x<=1)returnx;
elsereturnx+F(x2);
}
21. Funcia F are definiia alturat. Ce valoare are F(3)?
intF(intn)
{if(n==0||n==1)return1;
else
return2*F(n1)+2*F(n2);}
22. Pentru funciile f i g definite mai jos, scriei care este rezultatul returnat la apelul g(11).
Dar rezultatul returnat la apelul f(6)?
longg(longx)
{if(x>9)

return(x/10+x%10);
else
returnx;
}
longf(intc)
{if(c<1)

return1;
else
returng(c+f(c1));
}

23. Pentru funciile f1 i f2 definite alturat, stabilii care este valoarea lui f1(3).
Darf2(41382)?
longf1(intc)
{if(c%2==1)return1;
elsereturn2;
}
longf2(longn)
{if(n==0)return0;
elsereturnf1(n%10)+f2(n/10);
}

24. Pentru funcia f definit alturat, stabilii care este valoarea f(5). Dar f(23159)?
intf(intn){
intc;
if(n==0)return9;
else
{c=f(n/10);
if(n%10<c)returnn%10;
elsereturnc;
}
}

25. Se consider subprogramul cu definiia alturat. Ce valoare are f(3,1)?


intf(intn,inty)
{if(n!=0)
{y=y+1;
returny+f(n1,y);
}
elsereturn0;
}
26. Se consider subprogramul f cu definiia alturat. Ce valoare are f(1213111,1)?
intf(longn,intk){
if(n!=0)
if(n%10==k)
return1+f(n/10,k);
elsereturn0;
elsereturn0;}
27. Se consider subprogramul alturat:
intf(inta,intb)
{if(b<1)return1;
else
if(a%b==0)
return1+f(a/b,b);
else
return0;}
Ce valoare are f(15,2)? Dar f(128,2)?

28. Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a


apeluluif(121,1);?
voidf(longn,inti)
{if(n!=0)
if(n%3>0)
{cout<<i;f(n/3,i+1);}
}
29. Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a
apelului f(12345);?
voidf(longn)
{cout<<n%10;
if(n!=0)
{f(n/100);cout<<n%10;}
}
30. Pentru definiia alturat a subprogramului f, ce se afieaz ca urmare a apelului f(26);?
voidf(intx)
{if(x>0)
if(x%4==0)
{cout<<x;
f(x1);}
else
{f(x/3);
cout<<y;}}
31. Pentru definiia alturat a subprogramului f, ce se afieaz ca urmare a apeluluif(15,2);?
voidf(intn,intx)
{if(x>n)
cout<<0;
else
if(x%4<=1)f(n,x+1);
else
{f(n,x+3);
cout<<1;
}
}
32. Pentru subprogramul f definit mai jos, ce se afieaz ca urmare a apelului f(3,17)?
voidf(inta,intb)
{if(a<=b)
{f(a+1,b2);cout<<*;}
elsecout<<b;
}
33. Se consider subprogramul f definit alturat. Ce se va afia n urma apelului f(12345);?
voidf(longintn)
{if(n!=0)
{if(n%2==0)
cout<<n%10;
f(n/10);
}
}

34. Se consider subprogramul f, descris alturat. Ce se va afia n urma apelului f(3);?


voidf(intn)
{if(n!=0)
{if(n%2==0)
cout<<n<<;
f(n1);
cout<<n<<;
}
elsecout<<endl;
}
35. Subprogramul f are definiia alturat. Ce se va afia n urma apelului f(12345);?
voidf(longn)
{if(n>9)
{cout<<n/100;
f(n/10);
}
}
36. Funcia f are definiia alturat. Ce se va afia n urma apelului f(12345,0);?
voidf(longn,inti)
{if(i<n%10)
{cout<<n%10;
f(n/10,i+1);
}
}
37. Considerm subprogramul recursiv definit alturat. Ce se va afia n urma apelului de mai
jos?
f(C);
voidf(charc)
{if(c>A)f(c1);
cout<<c;
if(c>A)f(c1);}
38. Subprogramul afis este definit alturat. Ce se afieaz ca urmare a apelului afis(8);?
voidafis(intn)
{
cout<<n;
for(inti=n/2;i>=1;i)
if(n%i==0)afis(i);}
39. Subprogramul afis este definit alturat. Ce se afieaz ca urmare a apelului afis(8);?
voidafis(intn)
{
cout<<n;
for(inti=n/2;i>=1;i)
if(n%i==0)afis(i);
}
40. Subprogramul scrie este definit alturat. Ce se afieaz ca urmare a apelului scrie(2,6); ?
voidscrie(intx,inty)
{
cout<<x<<y;
if(x<y)
{
scrie(x+1,y1);
cout<<(x+y)/2;

}}
41. Ce se afieaz ca urmare a apelului p(123); dac subprogramul p are definiia alturat?
voidp(intx)
{cout<<x;
if(x!=0){p(x/10);
cout<<x%10;}}
42. Subprogramul f este definit alturat. Ce se afieaz ca urmare a apelului f(1,3);?
voidf(intx,inty)
{inti;
for(i=x;i<=y;i++)
{
cout<<i;
f(i+1,y);
}
}
43. Se consider subprogramul recursiv f1 definit alturat. Ce se va afia n urma
apelului f1(5);?
voidf1(intx)
{if(x<=9)
{cout<<x+1;
f1(x+2);
cout<<x+3;}
}
44. Subprogramul afis este definit alturat. Ce se va afia n urma apelului afis(17);?
void afis(int x)
{ if (x>3)
{ cout<<x-1;
afis(x/3);
cout<<x+1;
}
}
45. tiind c p este un vector cu 3 componente ntregi (vector declarat global), stabilii cu ce
trebuie nlocuite alfa i betan definiia subprogramului G alturat astfel nct n urma
apelului G(0) s se afieze toate numerele de 3 cifre nenule, fiecare numr fiind afiat o singur
dat.
void G(int k)
{int i;
for(i=1;i<=alfa;i++)
{ p[k]=i;
if(beta)G(k+1);
else
cout<<p[0]<<p[1]<<p[2]<<endl;
}}
1. Se citesc de la tastatur dou numere naturale nenule a i b. S se calculeze printr-o funcie
recursiv cel mai mare divizor comun al numerelor utiliznd algoritmul lui Euclid.
2. Se d un numr natural n citit de la tastatur. S se verifice printr-o funcie recursiv dac
numrul este prim sau nu.

3. Se citete de la tastatur un numr natural de cel mult 9 cifre. S se calculeze suma cifrelor
numrului printr-o funcie recursiv.
4. Se citete de la tastatur un ir de caractere avnd lungimea maxim de 30. S se realizeze o
funcie recursiv care s returneze numrul de vocale.
5. S se citeasc de la tastatur un ir format din n componente, utiliznd o funcie recursiv.
6. Din fiierul text MAT.IN se citete o matrice ptratic de dimensiune nn. S se afieze,
printr-o funcie recursiv, elementele de sub diagonala principal, exclusiv diagonala.
7. De la tastatur se citete un ir a cu n componente numere reale. S se afieze, printr-o funcie
recursiv, elementele irului n ordine invers.
Probleme propuse
1.
Se d un text. Afiai cuvintele sau cuvntul palindrom folosind o funcie recursiva de
verificare a unui cuvnt palindrom.
2. De la tastatur se citete un ir a cu n componente numere reale. S se afieze, printr-o funcie
fr tip recursiv, elementele irului n ordinea invers.
3.
Verificai dac o matrice este triunghiular superioar, fa de diagonal principal,
folosind o funcie recursiv.
4. Se citete un ir a cu n componente numere reale. S se inverseze elementele irului utiliznd o
funcie fr tip recursiv.
5.
Se citesc numere dintr-un fiier de intrare bac.in .Verificai printr-o funcie recursiva
dac exist cel puin un numr prim
6.
Se consider irul de numere naturale definit astfel: 1,1,2,1, 2,3,1,2,3,4,1, . Pentru o
valoare citit de la tastatur, n, s se afieze primi n termeni ai irului.
7.
S se verifice dac printre n numere citite se gsete un numr care are suma cifrelor un
numr prim folosind minim o funcie recursiv.
8.
Se d un ir a cu n componente numere ntregi i o valoare k. S se permute circular
elementele irului cu k poziii la stnga.
9.
Fr s se rezolve o ecuaie de gradul al doilea cu soluiile x1 i x2 calculati

10.
Se citeste de la tastatur un ir cu n componente numere ntregi. S se returneze prin
intermediul a doi parametri suma elementelor pare, respectiv produsul elementelor impare. Se
va utiliza o funcie fr tip recursiv.
11.
S se afieze toate numerele prime cuprinse ntre dou valori naturale citite a si b.
12.
Dndu-se o progresie aritmetic prin raie i primul termen s se afieze primii n
termeni utiliznd o funcie fr tip recursiv.
13.
Cte cifre impare conine un numr natural?
14.
Se citete de la tastatur un numr natural n de maxim 9 cifre. Utiliznd o funcie fr
tip recursiv s se afieze scrierea numrului ca puteri ale lui 2.
15.
Cte componente pare situate pe poziii pare conine un vector de numere naturale
16.
S se afieze printr-o funcie fr tip recursiv elementele triunghiului lui Pascal pn la
nivelul p, elemente care reprezint coeficienii binomului lui Newton din
dezvoltarea
17.
Se da un vector de numere ntregi. S se transforme fiecare element din baza 10 in baza 2
folosind o funcie recursiv pentru transformare.
18. Realizai o procedur recursiv care s afieze triunghiul de numere definit mai jos:
1 2 3 4 .n-2 n-1 n
1 2 3 4 .n-2 n-1
..
12

1
19.
Se citesc n numere .Determinai perechile de numere prime folosin o funcie pentru
calculul cmmdc-ului dintre 2 valori date.
20.
Cunoscnd termenii irului Fibonacci, s se descompun numrul natural n n sum de
termeni ai irului, astfel nct numrul termenilor utilizai s fie minim. Se va utiliza o funcie
fr tip recursiv.
21.
Calculai
suma:
,
unde

22.
Se citete un ir cu n componente. Realizai o funcie fr tip recursiv care s afieze
elementele irului de pe poziii prime n ordinea invers din ir
23. Se d un text de la tastatur. S se afieze numrul de vocale coninute n text.
24. Se citesc dimensiunile unei matrici n i m. Realizai o funcie fr tip recursiv care s citeasc
elementele unei matrici.
25. Verificai dac o cifr k se afl printre cifrele unui numr natural dat.
26. Din fiierul text MAT.IN se citete o matrice ptratic de dimensiune nn. S se afieze, printr-o
funcie fr tip recursiv, elementele de deasupra diagonalei principale, inclusiv diagonala.
27. Calculati
28. Din fiierul text MAT.IN se citete o matrice ptratic de dimensiune nn. S se afieze, printro funcie fr tip recursiv, elementele de sub diagonala secundar, inclusiv diagonala.
29. Afiai toate numerele palindromice de 3 cifre (un numr palindrom este acela pentru care inversul su
coincide cu numrul iniial).
30. De la tastatur se citete un ir a cu n componente numere reale. S se afieze, printr-o funcie
fr tip recursiv, elementele irului care sunt ptrate perfecte n ordinea invers apariiei n ir.
31. Verificati daca doua cuvinte sunt anagrame
32. De la tastatur se citete un ir a cu n componente numere reale. S se afieze, printr-o funcie
fr tip recursiv, elementele irului care sunt ptrate perfecte n ordinea invers apariiei n ir.
33. De la tastatur se citete un numr natural n. S se determine i s se afieze numrul obinut prin
inversarea cifrelor.
34. Se consider irul de numere naturale definit astfel: 1,1,2,3,2, 1,1,2,3,4,5,4,3,2,1,. Pentru o
valoare, citit de la tastatur, n, s se afieze primii n termeni ai irului.
35. Se consider un ir de numere ntregi citite pe rnd, pn la ntlnirea cifrei 0 care marcheaz sfritul
irului. S se afieze cte numere prime sunt in sir flosind o functie care sa verifice daca un numar este
prim
36. Dndu-se o progresie geometric prin raie i primul termen s se afieze primii n termeni
utiliznd o funcie fr tip recursiv.
37. Se citete baza de numeraie b (1<b<10) i un numr n n baza b. S se determine transformarea
numrului din baza b n baza 10.
38. Se d dimensiunea unei matrici ptratice nn. S se umple matricea cu numere naturale avnd
proprietatea c sunt prime. Se va utiliza o funcie fr tip recursiv.
39. Dintre primele n numere naturale, s se afieze acelea cu proprietatea c suma cifrelor de pe pozitii pare
lor este impar.
40. Realizati o funcie fr tip recursiv care s afieze triunghiul de numere definit mai jos:
1 1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3

n-2 n-2 n-2


n-1 n-1
n
41. S se afieze primele q numere care au suma cifrelor mai mic dect o valoare dat m.

42. Se d un numr natural n format din maxim 9 cifre. Utiliznd o funcie fr tip recursiv s se
afieze transformarea numrului n baza 2.
43. Scriei un program care, pentru doi ntregi x i n citii de la tastatur, afieaz valoarea expresiei:
44.
.

45. Se citete un numr natural n. Se citesc n valori succesiv, fr a folosi tablouri, s se afieze
numerele formate din maximul de cifre.
46. S se verifice daca un numar natural contine o cifra para
47. S se afieze cuvintele de lungime maxim dintre cele n cuvinte citite succesiv de la tastatur,
fr a utiliza tablouri, utiliznd o funcie fr tip recursiv.
48. Afisati primele n numere prime
49. Din fiierul text MAT.IN se citete o matrice ptratic de dimensiune nn. S se afieze, printr-o funcie
fr tip recursiv, elementele de sub diagonala principal, exclusiv diagonala.
50. Afiai toate numerele mai mici sau egale cu n natural pentru care suma cifrelor este par.
51. Din fiierul text MAT.IN se citete o matrice ptratic de dimensiune n. S se afieze, printr-o
funcie fr tip recursiv, elementele de deasupra diagonalei secundare, exclusiv diagonala.
52. Afieaz primii n termeni ai irului lui Fibonacci, unde valoarea lui n se transmite ca parametru.
53. Se citete un ir a cu n componente numere reale. S se inverseze elementele irului utiliznd o
funcie fr tip recursiv.