「这是我参与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实现的功能,每个题都用不同的解法和写法,我大体整理了一下自己的思路然后就写了,也没有再想其他的方法,如果你有更好的解法,欢迎和我留言,我们一起进步,一起学习数据结构,共同进步,通过这道题能更熟悉斐波那契数列操作。
斐波那契数列数列很简单,这里具体内容就不说了,我们说一下动态规划,动态规划是将需要求解的问题分成若干个子问题,通过求各个子问题的解得到原问题,各个子问题往往不是相互独立的,而是相互关联的。
总结
这篇文章主要解决了一个经典的入门级的算法题,就是斐波那契数列,斐波那契数列涉及的思想就是动态规划的思想,动态规划的具体原理就是将原问题进行分解成若干个问题,而子问题之间往往是相互关联的,动态规划是算法题中很重要的一种思想,接下来的算法题目中还会涉及,我们一边做题一边理解其中的思想吧。
如果有不当之处,欢迎指正。