斐波那契数列

时间限制: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];
     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]; } };

 

 

posted @ 2020-03-07 12:59  牛犁heart  阅读(210)  评论(0编辑  收藏  举报