Sunteți pe pagina 1din 4

Probleme recursivitate (v.

bac)

1)Funcţia F are definiţia alăturată. Ce valoare are F(3)?

int F(int n)
{if(n == 0 || n == 1) return 1;
else
return 2*F(n-1)+2*F(n-2);}
a. 1 b. 12 c. 6 d. 10
Raspuns:d. 10
Argumentare:Se verifica daca un nr n este egal cu 0 sau 1, daca da, se returneaza 1 altfel se
rezolva operatiile 2*F(n-1)+2*F(n-2). In cazul de mai sus 3 este mai mare decat 1 asa ca s-a
trecut direct la operatii.
Program:

#include < iostream.h >


int n;
int F(int n)
{if(n == 0 || n == 1) return 1;
else return 2*F(n-1)+2*F(n-2);
}

int main()
{cout << "n=";
cin >> n;
cout << F(n);
}

2)Subprogramul f are definiţia alăturată. Ce se va afişa în urma apelului f(12345);?

void f(long n)
{if (n > 9)
{cout << n/100;
f(n/10);
}
}
a. 1231210 b. 123121 c. 1234123121 d. 123
Raspuns corect: a. 1231210
Argumentare: Cat timp numarul n este mai mare decat 9 se vor afisa cifrele numarului de la
capat pana la penultimul,dupa care se va relua functia ,numarului taindu-se ultima cifra.

Program:
#include < iostream.h >
long n;
void f(long n)
{if (n > 9)
{cout << n/100;
f(n/10);
}
}
int main()
{cout << "n=";
cin >> n;
f(n);
}

3)Funcţia f are definiţia alăturată. Ce se va afişa în urma apelului f(12345,0);?

void f(long n, int i)


{if (i < n %10)
{cout << n%10;
f(n/10,i+1);
}
}
a. 54321 b. 543 c. 54 d. 5432
Raspuns:b. 534
Argumentare:Se dau un nr si un contor.Contorul este 0. Cat timp contorul este mai mic decat
restul impartirii numarului la 10 se va afisa restul numarului dupa care i creste cu 1,iar numarului
i se scade ultima cifra.

Program:
#include < iostream.h >
long n,i;
void f(long n, int i)
{if (i < n%10)
{cout << n%10;
f(n/10,i+1);
}
}
int main()
{cout << "n=";
cin >> n;
cout << "i=";
cin >> i;
f(n,i);
}
4)Funcţia F are definiţia alăturată. Ce valoare are F(18)?

int F(int x)
{
if (x < =1) return x;
else return x+F(x-2);
}
a. 90 b. 171 c. 91 d. 18
Raspuns: a. 90
Argumentare:
F(18)=F(16)+18
F(16)=F(14)+16
F(14)=F(12)+14
F(12)=F(10)+12
F(10)=F(8)+10
F(8)=F(6)+8
F(6)=F(4)+6
F(4)=F(2)+4
F(2)=F(0)+2
F(0)=0

Program:
#include < iostream.h >
int x;
int F(int x)
{ if (x < =1) return x;
else return x+F(x-2);
}
int main()
{cout << "x=";
cin >> x;
cout << F(x);
}

5)Funcţia F are definiţia alăturată. Ce valoare are F(5)?

int F(int x)
{if(x != 0) return x+F(x-1);
else
return x;
}
a. 5 b. 10 c. 15 d. 6
Raspuns: c. 15
Argumentare:
F(5)=F(4)+5
F(4)=F(3)+4
F(3)=F(2)+3
F(2)=F(1)+2
F(1)=F(0)+1
F(0)=0

Rezolvare:
#include < iostream.h >
int x;
int F(int x)
{if(x != 0) return x+F(x-1);
else
return x;
}
int main()
{cout << "x=";
cin >> x;
cout << F(x);
}

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