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

  • 相关阅读:
    NetworkInterface网速监测
    动态编译
    JSON C# Class Generator
    Cookie中的HttpOnly
    webapi session
    没有为扩展名“.html”注册的生成提供程序
    转 C# 使用openssl
    openssl jia adress
    扩展JS
    bootstrap 模态
  • 原文地址:https://www.cnblogs.com/wulm/p/15350280.html
Copyright © 2011-2022 走看看