斐波那些数列

帅比萌擦擦* 提交于 2020-03-07 14:04:02

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 

题目描述

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

n<=39

思路:

  首先想到的肯定是使用递归

class Solution {
public:
    int Fibonacci(int n) {
        if(n<=0) return 0;
         if(n==1 || n==2) return 1;
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
};

 接着采用递推的方式,使用循环计算斐波那契数列

class Solution {
public:
    int Fibonacci(int n) {
        int fn1 = 1;
        int fn2 = 1;
        if(n <= 0)
        {
            return 0;
        }
        if(n == 1|| n ==2)
        {
            return 1;
        }
        while(n-- > 2)
        {
            fn1 = fn1 + fn2;
            fn2 = fn1 - fn2;
        }
        return fn1;
    }
};

后来又在网上看到了另一种解法,使用动态规划的方法来做的(但我并没有运行成功,总是说我没有初始化,但理论感觉还是行得通的,所以记录下)

class Solution {
public:
    int Fibonacci(int n) {
        if(n <= 1)
            return 1;
        int step[] = new int[n+1];
        step[0] = 0;
        step[1] = 1;
        for(int i = 2;i < n;i++)
        {
            step[i] = step[i-2] + step[i - 1];
        }
        return step[n];
    }
};

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!