斐波拉契数列 不用递归 C++

题目描述

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

n<=39

 我一开始用递归方法,然后运行超时,之后就用下面的解法:

class Solution {
public:
    int Fibonacci(int n) {
       if(n==0)
           return 0;
        if(n==1)
            return 1;
        int a=0,b=1,c=0;
        for(int i=2;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

递归确实看着炫酷,但是败给了常规解法,常规解法最好理解,也解决了问题,何乐而不为。

c=a+b;

a=b;

b=c;

这个结构最为清晰,完全反映了斐波拉契数列的规则:

当n=2时,下一项为0+1,然后输出结果2,数列为0、1、2;这在for循环需要进行1次;

n=3时,下一项为1+2,然后输出结果3,数列为0、1、2、3;这在for循环需要进行2次;

n=4时,下一项为2+3,然后输出结果5,数列为0、1、2、3、5;这在for循环需要进行3次;

n是从2开始,因此i要从2开始,才能满足。

猜你喜欢

转载自blog.csdn.net/sinat_39416814/article/details/105117656
今日推荐