[剑指offer][07]斐波那契数列

题目描述:

· 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39

解题思路:

思路一:递归(时间复杂度高)


斐波那契数列递归公式

思路二:循环
用两个变量保存前两个数值,计算两个变量的和并更新变量,这样只需计算一次。

代码实现
思路1:递归
class Solution {
public:
    int Fibonacci(int n) {
        if(n<=0)  
          return 0;  
        if(n==1)  
          return 1;  
        return Fabonacci(n-1)+Fabonacci(n-2);  
    }
};
思路2:循环
class Solution {
public:
    int Fibonacci(int n) {
        int res[2]={0,1};
        if(n<2){
            return res[n];
        }
        int fib1,fib2,fib;
        fib1=0;
        fib2=1;
        fib=0;
        for(int i=2;i<=n;i++){
            fib=fib1+fib2;
            fib1=fib2;
            fib2=fib;
        }
        return fib;
    }
};
};
参考链接

斐波那契数列

你可能感兴趣的:([剑指offer][07]斐波那契数列)