Răspuns :
Ai o recursivitate cu dublu autoapel : primul pentru sir(n-1) si al doilea pentru sir(n-2). Numerele din sirul Fibonacii sunt date de formula :
| 0 daca n = 0
f(n) = | 1 daca n = 1
| f(n-1) + f(n-2) pentru n > 1
O functie este recursiva daca are doua proprietati :
1) conditie de terminare .. la tine in program (n < 2)
2) autoapel ... sir(n-1) si sir(n-2) - se regasesc in formula generala
For - ul nu are ce cauta acolo intr-o astfel de problema. Iti ofer sursa corecta pentru generarea tuturor termenilor sirului fibonacci unde intuiesc ca ar fi trebuit sa folosesti for-ul.
Succes!
#include <iostream>
using namespace std;
int m, i;
int fib(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
else return fib(n-1) + fib (n-2);
}
int main()
{
cin >> m;
for (i = 0; i < m; i++)
cout << fib(i) << " ";
return 0;
}
| 0 daca n = 0
f(n) = | 1 daca n = 1
| f(n-1) + f(n-2) pentru n > 1
O functie este recursiva daca are doua proprietati :
1) conditie de terminare .. la tine in program (n < 2)
2) autoapel ... sir(n-1) si sir(n-2) - se regasesc in formula generala
For - ul nu are ce cauta acolo intr-o astfel de problema. Iti ofer sursa corecta pentru generarea tuturor termenilor sirului fibonacci unde intuiesc ca ar fi trebuit sa folosesti for-ul.
Succes!
#include <iostream>
using namespace std;
int m, i;
int fib(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
else return fib(n-1) + fib (n-2);
}
int main()
{
cin >> m;
for (i = 0; i < m; i++)
cout << fib(i) << " ";
return 0;
}