Informatică, întrebare adresată de pgabrielacasand, 9 ani în urmă

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 express
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;
}



pgabrielacasand: multumesc foarte mult ,doar ce am intrat la facultate si mi-e mai greu cu programarea
Alte întrebări interesante