遞歸、遞推(斐波那契數列)

Fibonacci數

時間限制:3000 ms  |  內存限制:65535 KB
難度:1
描述


無窮數列1,1,2,3,5,8,13,21,34,55...稱爲Fibonacci數列,它可以遞歸地定義爲

F[n]=0;(n=0);

F(n)=F(n-1)+F(n-2).....(n>2)
現要你來求第n個斐波那契數。(第1個、第二個都爲1)

F(n)=1 ...........(n=1或n=2)


遞歸法://效率低

 
#include<stdio.h>
int fib(int n)
{
    if(n==0||n==1) return n;
    return fib(n-1)+fib(n-2);


}
int main()
{
    int m;
    scanf("%d",&m);
    while(m--)
    {
        int n;
        scanf("%d",&n);
        printf("%d\n",fib(n));
    }
}
        


遞推法:

#include<stdio.h>
int main()
{
    int n,i,f[1000];
        scanf("%d",&n);
        f[0]=0;
        f[1]=1;
        for(i=2; i<=n; i++)
        {
            f[i]=f[i-1]+f[i-2];
        }
        printf("%d\n",f[n]);


    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章