您的位置:首页 > 编程语言 > C语言/C++

斐波那契数列 递归 尾递归 递推 C++实现

2015-01-06 10:53 176 查看
==================================声明==================================

本文原创,转载请注明作者和出处,并保证文章的完整性(包括本声明)。

本文不定期修改完善,为保证内容正确,建议移步原文处阅读。

本文链接:/article/5266549.html

======================================================================

闲来不想做事,刷了个网页,看到乱七八糟的东西就不自觉的扩展下,这坏毛病改不了了,又浪费了好多刷贴吧的时间。

======================================================================

随手写了个小代码,感觉写起来很简单,但是对于退出条件是“1”还是“2”,是“<=”还是“<”,却是比较蛋疼的。

人老了就不愿意多动脑,自己推导就算了吧,我下面的代码靠编译调试确定了下,没有问题。

估计哪次让我现场在纸上写一个,就抓虾了。

======================================================================

要理论的话,请自行翻阅《数据结构与算法分析 c语言描述》和《算法导论》,我就贴个代码,请勿吐槽。

======================================================================

递归

#include <Windows.h>
#include <iostream>

using namespace  std;

LONG Fibonacci(LONG lN)
{
if (lN<2)
{
return lN;
}

return Fibonacci(lN-1)+Fibonacci(lN-2);
}

int main()
{
LONG lS=Fibonacci(40);

return 0;
}


尾递归

#include <Windows.h>
#include <iostream>

using namespace  std;

LONG Fibonacci(LONG lN,LONG lA=1,LONG lB=1)
{
if (lN==2||lN==1)
{
return lB;
}

return Fibonacci(lN-1,lB,lA+lB);
}

int main()
{
LONG lS=Fibonacci(40);

return 0;
}


递推

#include <Windows.h>
#include <iostream>

using namespace  std;

LONG Fibonacci(LONG lN)
{
LONG lS=1;
LONG lA=1;
LONG lB=1;

for (LONG lCount=3;lCount<=lN;lCount++)
{
lS=lA+lB;
lA=lB;
lB=lS;
}

return lS;
}

int main()
{
LONG lS=Fibonacci(40);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: