题意:
        输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
        
方法一:
直接遍历

思路:设初值第一项x=1,第二项y=1。
            每次都用x和y生成新的y(即前两项生成第三项),并使原先的y 变为x。
            循环遍历。
class Solution {
public:
    int Fibonacci(int n) {
        int x=1,y=1,t;//设初值第一项x=1,第二项y=1
        for(int i=3;i<=n;i++){
            t=y;
            y=x+y;//x和y生成新的y
            x=t;//原先的y 变为x
        }
        return y;
    }
};
时间复杂度:
空间复杂度:
方法二:
公式推导

思路:
    
        将波那契数列展开,如下:

        这里的只能应用于偶数的情况,而奇数情况会计算错误。
        因此,我们需要将 n 分成奇数和偶数两种情况:

    







class Solution {
public:
    
    int Fibonacci(int n) {
        if(n<=2)
            return 1;
        if(n%2==0)//偶数
            return Fibonacci(n/2)*Fibonacci(n/2+1)+Fibonacci(n/2-1)*Fibonacci(n/2);
        else//奇数
            return Fibonacci((n+1)/2)*Fibonacci((n+1)/2)+Fibonacci((n-1)/2)*Fibonacci((n-1)/2);
    } 
};
时间复杂度:
空间复杂度: