Documente Academic
Documente Profesional
Documente Cultură
Ce
are f(15,2)? Dar f(128,2)? se va afişa în urma apelului f(12345);?
1
void f(long n, int i) 10. Funcţia F are definiţia alăturată. Ce valoare are
{ F(18)?
if (i<n%10) int F(int x)
{ {
cout<<n%10; if (x<=1)
f(n/10,i+1); return x;
} else
} return x+F(x-2);
a. 54321 b. 543 c. 54 d. 5432 }
a. 90 b. 171 c. 91 d. 18
11. Funcţia F are definiţia alăturată. Ce valoare are 12. Se consideră subprogramul, f, definit alăturat.
F(5)? Ce valoare are f(100)?
int F(int x) Scrieţi o valoare pentru x astfel încât f(x)=1.
{ int f(int n)
if(x!=0) {
return x+F(x-1); if(n==0)
else return 0;
return x; else
} return n%2+f(n/2);
a. 5 b. 10 c. 15 d. 6 }
16. Subprogramul afis este definit alăturat. Ce se 17. Subprogramul f este definit alăturat. Ce valoare
afişează ca urmare a apelului afis(8); ? are f(8,4)?
void afis (int n) int f (int x,int y)
{ {
cout<<n; if(x<y)
for (int i=n/2;i>=1;i--) return 1+f(x+1,y);
if(n%i==0) if(y<x)
afis(i); return 1+f(y+1,x);
} return 1;
}
2
Ce se afişează ca urmare a apelului p(123); dacă
subprogramul p are definiţia alăturată? 18. Subprogramul f este definit alăturat. Ce se
void p (int x) afişează ca urmare a apelului f(1,3);?
{ void f (int x,int y)
cout<<x; {
if(x!=0) for ( int i=x; i<=y; i++)
{ {
p(x/10); cout<<i;
cout<<x%10; f(i+1,y);
} }
} }
19. Se consideră subprogramul recursiv f1 definit 20. Subprogramul afis este definit alăturat. Ce se va
alăturat. Ce se va afişa în urma apelului f1(5);? afişa în urma apelului afis(17);?
void f1(int x) void afis(int x)
{ {
if (x<=9) if (x>3)
{ {
cout<<x+1; cout<<x-1;
f1(x+2); afis(x/3);
cout<<x+3; cout<<x+1;
} }
} }
23. Considerăm subprogramul f definit alăturat. Ce 24. Pentru definiţia alăturată a subprogramului sc,
valoare are f(7,11)? Dar f(11,7)? stabiliţi ce valoare are sc(10). Dar sc(901324)?
int f(int x,int y) int sc(long x)
{ {
if(x<=y) if(x<10)
return x-y; return x;
return return
f(y-x,x-1)+3; sc(x/10)+x%10;
} }
25. Pentru definiţia alăturată a subprogramului f, ce 26. Subprogramul f are definiţia alăturată. Ce valoare
valoare are f(3)? Dar f(8)? are f(7)? Dar f(100)?
int f(int x) int f(int x)
{ {
if(x<=4) if(x%6==0)
return x*x-3; return x;
return else
f(x-3)+4; return f(x-1);
} }
3
} return x;
else
28. Subprogramul f are definiţia alăturată. Ce valoare if(x<y)
are f(6,5)? Dar f(5,10)? return f(x+1,y-1);
int f(int x,int y) else
{ return f(x-1,y);
if(x==y) }
29. Subprogramul f are definiţia alăturată. Ce valoare 30. Funcţia f are definiţia alăturată. Dacă f(x) are
are f(4)? Dar f(11)? valoarea 10100, care este valoarea lui x?
int f(int x) long f(int n)
{ {
if(x<1) if(n<=0)
return 1; return 0;
else else
return f(x-3)+1; return f(n-1)+2*n;
} }
31. Se consideră subprogramul f definit alăturat. Ce 32. Se consideră subprogramul f definit alăturat. Ce
valoare are f(5)? Dar f(100)? valoare are f(250)?
long f(int n) int f(int x)
{ {
if(n<0) if(x%3==0)
return 0; return 0;
else else
return f(n-2)+n;} return 1+f(x/3);}
a. 5 b. 2 c. 3 d. 4
4
37. Se consideră subprogramul f, definit alăturat.
a) Ce valoare are f(25)? 38. Se consideră subprogramul f, definit alăturat. Ce
b) Dar expresia f(1)+f(5)+f(15)? valoare are f(12,3)? Dar f(21114,1)?
int f(int n) int f(int n,int c)
{ {
if (n>20) if(n==0)
return 0; return 0;
else if(n%10==c)
return 5+f(n+5); return n%100+f(n/10,c);
} return f(n/10,c);
}
41. Se consideră subprogramul f, definit alăturat. Ce 42. Se consideră subprogramul f, definit alăturat. Ce
valoare are f(12,5)? Dar f(261,31)? valoare are f(3,13)? Dar f(1000,2009)?
int f(int a,int b) int f(int a,int b)
{ {
if(a<10) if(2*a>=b)
return b; return 0;
return f(a/10,b)*10+b+1; if(b%a==0)
} return b-a;
return f(a+1,b-1);
}
43. Se consideră tabloul unidimensional a definit 44. Considerăm subprogramul f, definit alăturat. Care
global, ce memorează elementele a1=12, a2=35, va fi valoarea variabilei globale x după apelul
a3=2, a4=8 şi subprogramul f, definit alăturat. Ce f(4962,x), dacă înainte de apel, x are valoarea 0?
valoare are f(1)? Dar f(4)? Dar dacă înainte de apel x are valoarea 52?
int f(int x) void f(int n,int &a)
{ {
if(x>=1) int c;
return (a[x]+f(x-1))%10; if(n!=0){
else c=n%10;
return 0; if(a<c) a=c;
} f(n/10,a);
}
}
5
47. Se consideră subprogramul recursiv definit 48. Se consideră subprogramul recursiv definit
alăturat. Ce valoare are functie(1)? Dar alăturat. Ce valoare are alfa(6)? Pentru ce
functie(4)? valoare a parametrului u, alfa(u) are valoarea 25
int functie(int x) ?
{ int alfa(int u)
if (x<=0) {
return 3 ; if (u==0)
else return 3;
return functie(x-3)*4 ; else
} return alfa(u-1)+3*u-2;
}
49. Se consideră subprogramul recursiv definit 50. Se consideră subprogramul recursiv definit
alăturat. Ce valori vor fi afişate pe ecran în urma alăturat. Ce valori vor fi afişate pe ecran în urma
apelului gama(6);? apelului beta(15);?
void gama(int n) void beta(int n)
{ {
int i; if (n!=1)
if(n>=3) {
{ cout<<n<<” ”;
for(i=3;i<=n;i++) if (n%3==0)
cout<<n<<” ”; beta(n/3);
gama(n-3); else
} beta(2*n-1);
} }
else
cout<<1;
}
51. Se consideră subprogramul recursiv definit 52. Ce valoare va avea variabila întreagă x, în urma
alăturat. Ce valoare are expresia bac(10,4)? Care apelului F(1,x), ştiind că, înainte de apel, variabila
este cea mai mică valoare de 2 cifre a lui u x are valoarea 0, iar subprogramul F este definit
pentru care funcţia bac(u,2) are valoarea 1? alăturat?
int bac(int u, int x) void F(int i, int &x)
{ {
if (u<x) if (i <= 10)
return 0; {
if (x==u) if(i % 2)
return 1; x = x + 2;
if (u%x==0) else
return 0; x = x – 1;
return bac(u,x+1); F(i + 1, x);
} }
}
53. Scrieţi ce se va afişa în urma executării 54. Ce se va afişa în urma executării subprogramului
subprogramului alăturat, la apelul F(57);. alăturat, la apelul F(56);?
void F(int x) void F(int x)
{ {
if(x != 0) if(x)
{ {
F(x/2); F(x/2);
cout << x%2; cout << x%10;
} }
} }
6
56. Ce valoare are F(2758), pentru funcţia F definită if(x%10%2 == 0)
alăturat? return 2 + F(x/10);
int F(int x) return 10 – F(x/10);
{ }
if(x == 0) a. 0 b. 20 c. 12 d. 4
return 0;
57. Pentru definiţia alăturată a subprogramului sub, 58. Pentru definiţia alăturată a subprogramului sub,
scrieţi ce valoare are sub(3). Dar sub(132764)? scrieţi ce valoare are sub(4). Dar sub(132764)?
long sub(long n) int sub(long n)
{ {
if (n!=0) if (n!=0)
if(n%2!=0) if(n%2!=0)
return n%10*sub(n/10); return n%10+sub(n/10);
else else
return sub(n/10); return sub(n/10);
else return 1; else return 0;
} }
61. Pentru definiţia alăturată a subprogramului sub, 62. Pentru definiţia alăturată a subprogramului f,
ce valoare are sub(9)? Dar sub(132764)? scrieţi ce valoare are f(0,0). Dar f(525,5)?
int sub(long n) int f(int x,int y)
{ {
if (n!=0) if(x==0)
if(n%2!=0) return 0;
return n%10+sub(n/10); else
else if(x%10==y)
return sub(n/10); return f(x/10,y)+1;
else return 0; else return f(x/10,y);
} }
63. Pentru definiţia alăturată a subprogramului f, 64. Pentru definiţia alăturată a subprogramului f,
stabiliţi ce valoare are f(2). Dar f(123)? stabiliţi ce valoare are f(2). Dar f(123)?
int f(int x) int f(int x)
{ {
if(x==0) if(x==0)
return 0; return 0;
else else
if(x%2==0) if(x%2==0)
return 1+f(x/10); return 3+f(x/10);
else else
return 2+f(x/10); return 4+f(x/10);
} }
7
65. Pentru definiţia alăturată a subprogramului f, 66. Pentru definiţia alăturată a subprogramului f,
stabiliţi ce valoare are f(1)? Dar f(100)? scrieţi ce valoare are f(51). Dar f(100)?
int f(int x) int f(int x)
{ {
if(x==0) if(x==50)
return 1; return 1;
else else
return 1+f(x-1); return 2+f(x-1);
} }
67. Se consideră subprogramul f, definit alăturat. Ce 68. Se consideră subprogramul f, definit alăturat. Ce
se afişează la apelul f(4);? se afişează la apelul f(4);?
void f(int n) void f(int n)
{ {
cout<<"*"; if(n>0)
if(n>2) {
{ cout<<n;
f(n-1); f(n-1);
cout<<"#"; cout<<n;
} }
} }
71. Se consideră subprogramul f, definit alăturat. Ce 72. Subprogramul recursiv alăturat este definit
se afişează la apelul f('a');? incomplet. Scrieţi expresia care poate înlocui
void f(char c) punctele de suspensie astfel încât, în urma apelului,
{ f(12) să se afişeze şirul de valori:
if (c != 'e') 12 6 3 1 1 3 6 12.
{ void f(int i)
f(c+1); {
cout<<c; if (. . .)
} {
} cout<<i<<’ ’;
f(i/2);
cout<<i<<’ ’;
}
}
8
Se consideră subprogramul f definit alăturat. Ce se 73. Subprogramul f este definit alăturat. Ce se
va afişa în urma apelului f(14);? afişează ca urmare a apelului f(1,3); ?
void f(int x) void f (int x,int y)
{ {
if (x<=10) if (x<y)
cout<<0<<” ”; {
else x=x+1;
{ f(x,y);
f(x-2); y=y-1;f(x,y);
cout<<x<<” ”; }
} else
} cout<<x<<y;
}
74. Funcţia recursivă f este astfel definită încât 75. Funcţia f are definiţia alăturată. Scrieţi cinci valori
f(1)=8, iar f(n+1)=2*f(n)-4 pentru orice n de apel pe care le poate avea n astfel încât,
natural nenul. pentru cele 5 apeluri corespunzătoare acestor
a) Ce valoare are f(5) ? valori, să se obţină 5 valori ale funcţiei, disticte
b) Care este cea mai mare valoare pe care o poate două câte două.
lua x astfel încât f(x) < 1000 ? int f(int n)
{
if (n<=9)
return 0;
if (n%5==0)
return 0;
return 1+f(n-3);
}
76. Funcţia f are definiţia alăturată. Scrieţi 4 valori de înlocui punctele de suspensie astfel încât, în
apel pe care le poate avea n astfel încât, pentru urma apelului, subprogramul f să returneze suma
cele 4 apeluri, corespunzătoare acestor valori, să primelor două cifre ale numărului primit prin
se obţină 4 valori, distincte două câte două. intermediul parametrului x?
int f(int n) Exemplu: în urma apelului f(2318) valoarea
{ returnatăeste 5.
if (n<=9) int f(int x)
return 0; {
if (n%4==0) if (...)
return 0; return x%10 + x/10;
return 1+f(n-3); else
} return f(x/10);
}
77. Subprogramul recursiv alăturat este definit a. x<=100 b. x<=99 c. x==99 d. x!=0
incomplet. Care dintre următoarele expresii poate
9
void F(int x)
{
cout<<x;
if(x>=3)
F(x-2);
cout<<x-1;
}
10