剑指 Offer 10- I 和 剑指 Offer 10- II 解题方法相同
迭代算法的时间和内存损耗以及源代码:

int fib(int n){
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else
{
return fib(n-1)+fib(n-2);
}
}
迭代算法虽然简洁但是时间和内存消耗(会造成栈溢出)都很多,因此需要用循环来解这道题。
时间和内存消耗以及源代码如下:

int fib(int n){
long f;
if (n == 0)
{
f = 0;
}
else if (n == 1)
{
f = 1;
}
else
{
long f1 = 0;
long f2 = 1;
unsigned int i;
for (i=0; i<=(n-2); i++)
{
f = (f1 + f2) % (1000000007);
f1 = f2;
f2 = f;
}
}
return f;
}
本文探讨了剑指Offer10-I和10-II题目的解题方法,对比了递归与迭代算法在解决斐波那契数列问题上的效率。通过分析发现,迭代算法尽管初始代码简洁,但在大规模数据处理时会遇到时间和内存消耗过大的问题,甚至导致栈溢出。为解决这一问题,文章提供了优化后的迭代算法实现,采用循环而非递归,有效避免了资源浪费,并给出了具体源代码。

1万+

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



