JZ7 — 斐波那契数列

题目描述

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

题目分析

斐波那契数列的数学规律是f[n] = f[n-1] + f[n-2]

动态规划

从前向后递推即可。

C++
class Solution
{
public:
    int Fibonacci(int n)
    {
        int ans[50] = {0, 1};
        for (int i = 2; i <= n; i++)
            ans[i] = ans[i - 1] + ans[i - 2];
        return ans[n];
    }
};
Java
class Solution {
    public int Fibonacci(int n) {
        int[] ans = new int[50];
        ans[0] = 0;
        ans[1] = 1;
        for (int i = 2; i <= n; i++)
            ans[i] = ans[i - 1] + ans[i - 2];
        return ans[n];
    }
}

记忆化递归

从后向前递归,将结果保存下来,便于复用,节省递归时间。

C++
class Solution
{
public:
    Solution()
    {
        memset(ans, 0, sizeof(ans));
    }
    int Fibonacci(int n)
    {
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;
        if (ans[n] == 0)
            ans[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
        return ans[n];
    }

private:
    int ans[50];
};
Java
public class Solution {
    private int[] ans = new int[50];

    public int Fibonacci(int n) {
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;
        if (ans[n] == 0)
            ans[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
        return ans[n];
    }
}

一个回复在 “JZ7 — 斐波那契数列

发表评论

电子邮件地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部