方程的尾递归函数 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实际上不支持尾递归。这将作为常规递归处理,并且将受到最大递归深度限制,即使它是尾递归形式
我需要为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实际上不支持尾递归。这将作为常规递归处理,并且将受到最大递归深度限制,即使它是尾递归形式