递归函数说明

2024-04-25 10:16:38 发布

您现在位置: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)

有人能帮我解释一下上面的代码吗上面函数的输出是13。你知道吗


Tags: 函数代码returnifexampledefresultelse
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)返回之前,它会打印。这通常称为“展开”递归。你知道吗

在第一个值k=2时。 很明显,2大于0。所以“如果”块将运行。 现在将执行2+tri\u递归(1)。你知道吗

triu递归(1)也用同样的方法计算。所以它的值是1。你知道吗

当k=0时递归停止

所以答案是2+1等于3

相关问题 更多 >

    热门问题