斐波那契数列(递归剪枝优化)

描述

要求输出斐波那契数列第n(1≤n≤64)项。

斐波那契的第i项总是等于它的前面两项之和,约定第一项为0,第二项为1,如下所示:

0, 1,1,2,3,5,8,13,21, 34……

格式

输入格式
一个正整数n,表示第n项
输出格式
一个正整数,第n项的值

样例

输入样例

5

输出样例

3

代码

#include 
#include 
int a[1007]={0};
int fbn(int n)
{
    if(n==1)
        return 0;
    else if(n==2)
        return 1;
    else{
        if(a[n]!=0)
            return a[n];
        else{
            int sum= fbn(n-1)+fbn(n-2);
            a[n]=sum;
            return sum;
        }

    }

}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",fbn(n));
    return 0;
}

你可能感兴趣的:(c语言,c语言)