剑指offer-----7、斐波那契数列

1、题目描述

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

2、分析

        这个问题其实已经是一个老生常谈的问题了,最常见的解决办法有三种,第一种就是常见的教科书级别的递归,但是这个有一个很大的问题就是很容易爆栈。第二种是用循环,中间记录上一步计算的结果。第三种是用数学公式。递归可以不用去考虑,最需要掌握的是第二种。

3、代码

class Solution {
public:
    int Fibonacci(int n) {
        if(n==0) return 0;
        if(n==1) return 1;
        if(n==2) return 1;
        long res;
        int mid1=1;
        int mid2=1;
        for(int i=3;i<=n;++i){
            res=mid1+mid2;
            mid1=mid2;
            mid2=res;
        }
        return res;
    }
};

4、相关知识点

        斐波那契的相同类型题有很多,比如上台阶问题等等。

posted @ 2019-05-26 16:42  吾之求索  阅读(121)  评论(0)    收藏  举报