您的位置:首页 > 其它

斐波那契数列的递归、递推算法比较

2013-04-16 15:24 344 查看
公式:F(n+1)=F(n)+F(n-1), F(0)=F(1)=1

网上找到的一个最简单例子,修改了两个bug

// 递归算法

int F1(int n)

{

if (n < 2)

return 1;

else

return F1(n-1)+F1(n-2);

}

// 递推算法

int F2(int n)

{

if (n < 2)

return 1;

int f0=1, f1=1, f;

for (int i=0; i<n-1; i++)

{

f=f0+f1;

f0=f1;

f1=f;

}

return f;

}

两个算法功能相同,简单总结一下

递归:算法简单,但是效率较低,因为要入栈、出栈,并且容易造成堆栈溢出。

递推:算法较复杂,但是效率比较高。

Intel T7250/2.45GB内存/XP系统/VC6 Debug版本程序/测试循环100万次耗时:F1 4390ms F2 72ms

Release版本耗时:F1 1390ms F2 21ms

从上面数据也可以看出来Release比Debug代码的确优化不少。

注:考虑到时钟的误差,上面F2函数的数据实际上是循环1亿次的数据除以100得到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: