1. 题目

2. 思路
方法1:递归,但是有很多重复计算
方法2:带备忘录的递归:自顶向下,带备忘录可以避免重复计算
方法3:动态规划(自底向上),与递推类似(递推参考:https://mp.weixin.qq.com/s/mJ_jZZoak7uhItNgnfmZvQ)
此法只能计算一个数,而带备忘录的是计算出所有数再返回。
- 让a,b一直往下变化,则就可以自底(0)向上(n)计算出 f(n)

3. 代码
- 时间O(N),空间O(1)
class Solution {
public int fib(int n) {
int a = 0;
int b = 1;
int sum;
for(int i=0; i<n; i++){
sum = (a+b)%1000000007;
a = b;
b = sum;
}
return a;
}
}
本文探讨了三种计算斐波那契数列的方法:递归、备忘录优化递归以及动态规划。递归方法存在大量重复计算,效率较低;备忘录优化能减少重复,提高效率;动态规划则自底向上计算,避免了重复,空间复杂度更低。代码示例展示了使用备忘录优化的斐波那契数列计算,时间复杂度为O(N),空间复杂度为O(1)。

被折叠的 条评论
为什么被折叠?



