Hey,imi poate explica si mie cineva recursivitatea functiei care returnează termenul n din şirul lui Fibonacci.
acesta este codul doar ca nu il inteleg exact
int sir(int n)
{ int i;
if(n<2)
return n;
else
for(i=2;i<=n;i++)
{return sir(n-1)+sir(n-2);}
}
Răspunsuri la întrebare
Răspuns de
0
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;
}
pgabrielacasand:
multumesc foarte mult ,doar ce am intrat la facultate si mi-e mai greu cu programarea
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Istorie,
9 ani în urmă
Istorie,
9 ani în urmă