wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Recursivitate 2

Total questions: 9

Worksheet time: 45mins

Name
Class
Date
1.

Subprogramul f alăturat este incomplet definit. Indicați expresia cu care pot fi înlocuite punctele de suspensie, astfel încât valoarea lui f(2019,1) să fie egală cu numărul divizorilor pozitivi ai lui 2019.

int f(int n, int d)

{ if(..........) return 0;

if(d*d==n) return 1;

if(n%d==0) return 2+f(n,d+1);

return f(n,d+1);

a)

d*d>n

b)

d>n/2

c)

d>n

d)

d>2*n

2.

Subprogramul f este definit

alăturat. Valoarea

f(2203,2018) este:


int f(int x, int y)

{ if(x*y==0) return 0;

if(x%2==y%2) return 1+10*f(x/10,y/10);

return 10*f(x/10,y/10);

}

a)

1100

b)

11

c)

2

d)

0

3.

Subprogramul f este definit alăturat.

Indicați ce se afişează în urma

apelului de mai jos.

f(6);

void f(int x)

{ cout<<x; | printf(“%d“,x);

if(x>3)

{ f(x-2);

cout<<x; | printf(“%d“,x);

}

}

a)

642

b)

6446

c)

64246

d)

642246

4.

Se consideră subprogramul f, definit

alăturat. Indicați numărul valorilor

întregi afișate în urma apelului de mai

jos.

f(2024,2);


void f(int x, int nr)

{ if(x*nr>0)

{ if(x%4==0)

cout<<x<<’ ’;

f(x-4,nr-1);

}

cout<<x<<’ ’;

}

a)

3

b)

4

c)

5

d)

6

5.

Subprogramul F este definit alăturat. Scrieţi

ce valori au F(105,105) respectiv

F(105,42).


int F(int x, int y)

{ if(x==y) return 1;

else

{ if(x<y)

{ x=x+y;

y=x-y;

x=x-y;

}

return 1+F(x-y,y);

}

}

a)

F(105,105)=2 F(105,42)=4

b)

F(105,105)=1 F(105,42)=4

c)

F(105,105)=1 F(105,42)=3

d)

F(105,105)=2 F(105,42)=10

6.

Se consideră subprogramul f, definit

alăturat. Scrieţi ce se afişează în

urma apelului de mai jos.

f(6);


void f(int x)

{ if(x>3)

{ cout<<x;

f(x-1);

}

cout<<x;

}

a)

6543455

b)

6544456

c)

6543456

d)

6543356

7.

Se consideră subprogramul f,

definit alăturat. Ce se afişează

pe ecran la apelul:

cout<<' '<<f(8174);?


int f(int x)

{

int n;

if(x>0)

{ if(x%2==0)

{ cout<<x%10; | printf(”%d”,x%10);

n=1+f(x/10);

}else

{ n=1+f(x/10);

cout<<x%10; | printf(”%d”,x%10);

}

return n;

}

else return 0;

}

a)

4817 1

b)

4827 4

c)

8417 4

d)

4817 4

8.

Se consideră subprogramul f, definit alăturat. Scrieţi ce se afişează în urma apelului de mai jos. f(9);

void f(int x)

{ cout<<x;

if(x>0)

{ if(x%2==0)

cout<<'*';

f(x/2);

}

}

a)

94*2*10

b)

94*1*10

c)

94*4*10

d)

49*2*10

9.
a)

atât f1, cât şi f2

b)

numai f1

c)

numai f2

d)

nici f1, nici f2