递归函数说明

时间:2019-06-28 04:31:35

标签: python

我是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。

2 个答案:

答案 0 :(得分:2)

听起来您在问为什么函数可以打印 13,而不是为什么返回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的退货,其中印有13

打印顺序是这样的,因为每个函数都必须在调用它的函数继续前进之前返回。因此,在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