10、斐波那契数列

1、题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

2、思路:斐波那契公式

由公式可知,这是典型的递推公式,后一项等于前两项相加。若我们直接计算f(10),那就要从上往前不断的推,求解过程如下图

这样中间结果中有大量的重复计算,并且重复的节点会随着n的增大而急剧就是说其计算量会随着n的增大而急剧增大。

  正确的解决方式就是从下往上进行计算,首先根据f(0)和f(1)算出f(2),然后再根据f(1)、f(2)算出f(3),依次往上算,就不会有重复的计算,时间复杂度O(n)。

3、代码

public class Solution {
    public int Fibonacci(int n) {
        int pre=1;
        int prepre=0;
        int result=0;
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        for(int i=2;i<=n;i++){
            result=pre+prepre;
            prepre=pre;
            pre=result;
        }
        return result;
    }
}

猜你喜欢

转载自www.cnblogs.com/guoyu1/p/12066146.html