斐波那契数列

93 阅读2分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战

斐波那契数列

题目

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1:

输入: n = 2
输出: 1

示例 2:

输入: n = 5
输出: 5

提示:

  • 0 <= n <= 100

Related Topics

  • 记忆化搜索

  • 数学

  • 动态规划

题目分析

这道题是斐波那契数列,入门必刷题目。规律是f(n + 1) = f(n) + f(n - 1)

代码实现

class Solution {
    public int fib(int n) {
        int a = 0, b=1, sum;
        for (int i = 0;i<n;i++) {
            sum = (a + b)% 1000000007;
            a = b;
            b = sum;
        }
        return a;
    }
}

这是我用java实现的功能,每个题都用不同的解法和写法,我大体整理了一下自己的思路然后就写了,也没有再想其他的方法,如果你有更好的解法,欢迎和我留言,我们一起进步,一起学习数据结构,共同进步,通过这道题能更熟悉斐波那契数列操作。

斐波那契数列数列很简单,这里具体内容就不说了,我们说一下动态规划,动态规划是将需要求解的问题分成若干个子问题,通过求各个子问题的解得到原问题,各个子问题往往不是相互独立的,而是相互关联的。

总结

这篇文章主要解决了一个经典的入门级的算法题,就是斐波那契数列,斐波那契数列涉及的思想就是动态规划的思想,动态规划的具体原理就是将原问题进行分解成若干个问题,而子问题之间往往是相互关联的,动态规划是算法题中很重要的一种思想,接下来的算法题目中还会涉及,我们一边做题一边理解其中的思想吧。

如果有不当之处,欢迎指正。