方程的尾递归函数 Tn=n∑k=1 =k

Tail recursive function for the equation Tn=n∑k=1 =k

我需要为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

这算不算第一段代码的尾递归函数?如果不会怎么写呢?

对于尾递归的函数,调用自身需要是它在 return 语句中做的最后也是唯一的事情。对于您的具体情况,这可以通过传递默认参数来实现,您 return 根据您的基本条件:

def Tn(n,result=0):
    if not n: return result
    return Tn(n-1,result+n)

注意Python实际上不支持尾递归。这将作为常规递归处理,并且将受到最大递归深度限制,即使它是尾递归形式