zoukankan      html  css  js  c++  java
  • 斐波那契数列 递归 尾递归 递推 C++实现

    ==================================声明==================================

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

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

    本文链接:http://www.cnblogs.com/wlsandwho/p/4205524.html

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

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

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

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

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

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

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

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

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

    递归

     1 #include <Windows.h>
     2 #include <iostream>
     3 
     4 using namespace  std;
     5 
     6 LONG Fibonacci(LONG lN)
     7 {
     8     if (lN<2)
     9     {
    10         return lN;
    11     }
    12 
    13     return Fibonacci(lN-1)+Fibonacci(lN-2);
    14 }
    15 
    16 int main()
    17 {
    18     LONG lS=Fibonacci(40);
    19 
    20     return 0;
    21 }

    尾递归

     1 #include <Windows.h>
     2 #include <iostream>
     3 
     4 using namespace  std;
     5 
     6 LONG Fibonacci(LONG lN,LONG lA=1,LONG lB=1)
     7 {
     8     if (lN==2||lN==1)
     9     {
    10         return lB;
    11     }
    12 
    13     return Fibonacci(lN-1,lB,lA+lB);
    14 }
    15 
    16 int main()
    17 {
    18     LONG lS=Fibonacci(40);
    19 
    20     return 0;
    21 }

    递推

     1 #include <Windows.h>
     2 #include <iostream>
     3 
     4 using namespace  std;
     5 
     6 LONG Fibonacci(LONG lN)
     7 {
     8     LONG lS=1;
     9     LONG lA=1;
    10     LONG lB=1;
    11 
    12     for (LONG lCount=3;lCount<=lN;lCount++)
    13     {
    14         lS=lA+lB;
    15         lA=lB;
    16         lB=lS;
    17     }
    18 
    19     return lS;
    20 }
    21 
    22 int main()
    23 {
    24     LONG lS=Fibonacci(40);
    25 
    26     return 0;
    27 }
  • 相关阅读:
    KMP
    图论知识,博客
    POJ 2318/2398 叉积性质
    CF821 E. Okabe and El Psy Kongroo 矩阵快速幂
    CF821 D. Okabe and City 图 最短路
    CF821 C. Okabe and Boxes 栈模拟
    CF821 A. Okabe and Future Gadget Laboratory 水
    Atcoder arc077 D
    Atcoder #017 agc017 D.Game on Tree 树上NIM 博弈
    Atcoder #017 agc017 B.Moderate Differences 思维
  • 原文地址:https://www.cnblogs.com/wlsandwho/p/4205524.html
Copyright © 2011-2022 走看看