10剑指OFFER之斐波那契数列

参考资料:

标准答案

思路:

从前往后加。

自己的解法:
class Solution {
public:
    int Fibonacci(int n) {
        if(n<=1)
            return n;
        
        return FibonacciCore(n);
    }
    
    int FibonacciCore(int n)
    {
        int a[39]={0};
        a[0]=0;
        a[1]=1;
        //从前往后加的思想
        for(int i=2;i<=n;i++)
        {
            a[i]=a[i-2]+a[i-1];
        }

        return a[n];
    }
};
//哭死啊,斐波那契数列是什么啊?
//后面1个数等于前面两个数的和
//比如:
//0 1 1 2 3 5 8 13 21 34 55 89 
//思路是啥啊?
//从前往后加
//
//

标准答案:
class Solution {
public:
    int Fibonacci(int n) {
        
        int Result[2] ={0,1};
        if(n <2)
            return Result[n];
        
        int FiOne= 0;
        int FiTwo= 1;
        int FiResult = 0;
        //思路:从前往后加
        for(int i=2;i<=n;i++)
        {
            FiResult = FiOne+FiTwo;
            FiOne = FiTwo;
            FiTwo = FiResult;
        }
        return FiResult;
    }
};

你可能感兴趣的:(10剑指OFFER之斐波那契数列)