如何理解尾递归

所谓尾递归,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

 

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

 

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

相关文章
相关标签/搜索