剑指Offer(第2版)——面试题10:斐波那契数列

题目:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
斐波那契数列公式为:

剑指Offer(第2版)——面试题10:斐波那契数列_第1张图片

1.解题思路:

  • 使用递归的方法是最简单的,但是效率成问题,有很多重复的计算。其实就是一种自顶向下的思想。
  • 使用自底向上的思想,从n=2开始计算,并且每次保存前面两次计算的结果,以此进行下一次计算,这样就不会有重复的计算。复杂度为O(n)。

2.代码:

class Solution {
public:
    int Fibonacci(int n) {
        if(n <= 0)
            return 0;
        if(n == 1)
            return 1;
        int first = 0, second = 1, third = 0;
        for (int i = 2; i <= n; i++) {
        	//模1000000007,可以保证值永远在int的范围内
            third = (first + second) % 1000000007;
            first = second;
            second = third;
        }
        return third;
    }
};

你可能感兴趣的:(剑指Offer(第2版),动态规划)