zoukankan      html  css  js  c++  java
  • 尾递归

    尾递归用途:

      递归循环最终计算出结果。

    尾递归原理:

      方法参数上引用了上一次的计算结果,也可以理解为将计算结果作为参数传递了过去。

    以计算斐波那契数列第n项为例(n为下标,从0开始),

      斐波那契数列:0、1、1、2、3、5、8、13、21、34、……

    使用递归,尾递归,循环三种实现方式:
    递归:

    int fibonacci(int n)
    {
        if (n == 0) return 0;
        else if (n == 1) return 1;
        else return fibonacci(n-1)+fibonacci(n-2);
    }

    尾递归:

    int fibonacci_tail(int n, int ret1, int ret2)
    {
    if (n == 0) return ret1;
    else return fibonacci_tail(n-1, ret2, ret1 + ret2);
    }

    循环:

    int fibonacci_cycle(int n)
    {
        int fib;
        int f0 = 0;
        int f1 = 1;
        if (n == 0) return f0;
        else if (n == 1) return f1;
        else {
            for (int $i = 2; $i <= n; $i++) {
                fib = f0 + f1;
                f0 = f1;
                f1 = fib;
            }
            return fib;
        }
    }
    

    参考:https://www.zhihu.com/question/20761771

  • 相关阅读:
    一意孤行
    叶子书签
    漫舞
    男朋友
    ubuntu自动关机命令,ubuntu 无法关机解决方法
    情人节
    生死由天
    春暖花开
    android开发学习中的问题:error: device not found解决办法
    暗恋
  • 原文地址:https://www.cnblogs.com/wulm/p/15350280.html
Copyright © 2011-2022 走看看