【发布时间】:2015-12-21 07:09:03
【问题描述】:
我使用尾递归进行阶乘,它返回“无” - 为什么
def fact(n, k):
print "n = %d k = %d" % (n,k)
if n == 1:
print "k final = ", k
return k
else:
# print n
print k
fact(n-1, k*(n-1) )
a =(fact(4, 4) )
print a
【问题讨论】:
-
else:子句中没有返回任何内容。 -
一个在 Python 中处理递归的问题会产生更好的重复。
-
@chepner 几乎所有语言的模式都是一样的。例外是像 Lisp 这样的语言,其中函数中的最后一个表达式会自动返回。所以我没有为每种语言收集类似的问题。
-
@Barmar - 但我在 if 子句中有一个 return k - 我认为它会返回 k - 为什么不呢?
-
没有
if循环这样的东西。循环使用while和for完成。