zoukankan      html  css  js  c++  java
  • 如何理解尾递归

    所谓尾递归,return语句后面跟的一定没有新的变量,只需要一个栈,只需要递归调用它本身,所有的运算操作全部放在尾递归函数的参数列表中进行。

    例:

    def tailrecsum(x, running_total=0):
      if x == 0:
        return running_total
      else:
        return tailrecsum(x - 1, running_total + x)
    //理论上类似上面:tailrecsum(5, 0)
    tailrecsum(4, 5)
    tailrecsum(3, 9)
    tailrecsum(2, 12)
    tailrecsum(1, 14)
    tailrecsum(0, 15)
    15

    事实上,每次进行尾递归,都是具体数值在运算,之所以叫做尾递归,因为此函数一直在调用自己,期待着最尾部的结束条件,再次强调,调用的过程中没有使用新的未知变量,不需要同递归一样开辟新的内存。

    所以,使用尾递归思想编程解决问题时,要把最尾部的结束条件确定好,把尾递归到达结束条件时return出去的东西写成我们期待尾递归计算出的东西,把具体的操作放在函数的参数上实现。

  • 相关阅读:
    网络编程的基础
    day31作业
    异常处理其他内容
    异常处理的使用
    常见的异常种类
    ansible条件使用--实践
    Ansible的循环
    Ansible的条件语句
    ansibleplaybook的使用
    ansible官方文档翻译之变量
  • 原文地址:https://www.cnblogs.com/wonker/p/12031703.html
Copyright © 2011-2022 走看看