我是python的新手,我陷入了递归函数
def tri_recursion(k):
if(k>0):
result = k+tri_recursion(k-1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(2)
有人可以帮我解释一下上面的代码,上面函数的输出是1 3。
答案 0 :(得分:2)
听起来您在问为什么函数可以打印 1
和3
,而不是为什么返回3
。
每次调用参数大于零的函数都会显示某物。
当您使用2
进行调用时,会导致呼叫tri_recursion(1)
并导致tri_recursion(0)
调用tri_recursion(0)
不会打印任何内容,并返回0
调用tri_recursion(1)
将导致1
被打印(1 + tri_recursion(0)
)并返回1
。
调用tri_recursion(2)
将导致3
被打印(2 + tri_recursion(1)
)并返回3
最后,您将得到3
的退货,其中印有1
和3
。
打印顺序是这样的,因为每个函数都必须在调用它的函数继续前进之前返回。因此,在tri_recursion(2)
可以打印任何内容之前,tri_recursion(1)
必须返回,但是在tri_recursion(1)
返回之前,必须打印任何内容。这通常称为“展开”递归。
答案 1 :(得分:1)
在k = 2的第一个值处。 因此显然2大于0。因此将运行“ if”块。 现在将执行2 + tri_recursion(1)。
tri_recursion(1)也以相同的方式计算。因此其值为1。
当k = 0时递归停止
所以答案是2 +1等于3