方程 Tn=n∑k=1 =k 的尾递归函数
Posted
技术标签:
【中文标题】方程 Tn=n∑k=1 =k 的尾递归函数【英文标题】:Tail recursive function for the equation Tn=n∑k=1 =k 【发布时间】:2022-01-07 09:36:37 【问题描述】:我需要在python中为方程Tn=n∑k=1 =k(从k=1到n的总和)编写尾递归函数。我能够编写非尾递归
def TN(n):
if n == 0:
return 0
return n + TN(n-1)
我试过了:
def TN(n):
if n==0:
return 0;
s=n+TN(n-1)
return s
这算作第一个代码的尾递归函数吗?如果没有怎么写?
【问题讨论】:
为什么觉得这两个版本不一样? 【参考方案1】:要使函数尾递归,调用自身必须是它在 return 语句中所做的最后也是唯一的事情。对于您的具体情况,这可以通过传递您在基本条件上返回的默认参数来实现:
def Tn(n,result=0):
if not n: return result
return Tn(n-1,result+n)
请注意,Python 实际上并不支持尾递归。这将作为常规递归处理,并且将受到最大递归深度限制,即使它是尾递归形式
【讨论】:
哦,好的,谢谢!以上是关于方程 Tn=n∑k=1 =k 的尾递归函数的主要内容,如果未能解决你的问题,请参考以下文章