方程 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 的尾递归函数的主要内容,如果未能解决你的问题,请参考以下文章

n^k的递归​函数

(算法专题)使用常微分方程将递归转换为非递归

编写一个函数实现n^k,使用递归实现

C语言编写一个函数实现n^k,使用递归实现

计算从n个人中选k个人组成委员会的不同组合数 用C语言函数递归

java作业利用递归解决问题