递归函数旅馆python

时间:2019-05-12 06:01:23

标签: python-3.x

我试图了解递归函数。我想知道答案是如何逐步提供的

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(6)

结果是只想知道它的来历

1 3 6 10 15 21

1 个答案:

答案 0 :(得分:1)

该函数计算0到n之间所有数字的总和,并打印中间结果。第一个1是0 + 1,3 = 0 + 1 + 2,6 = 0 + 1 + 2 + 3,10 = 0 + 1 + 2 + 3 + 4,...

要了解递归函数,您需要注意两点:递归调用是如何完成的,以及递归何时停止。

递归调用由result = k+tri_recursion(k-1)给出,递归在k <= 0时停止并返回0。因此,如果我们仅假设正数,则可以这样描述tri_recursion:

tri_recursion(k) = k + tri_recursion(k-1) if k > 0
tri_recursion(0) = 0

所以tri_recursion(k) = k + tri_recursion(k-1) = k + (k-1) + tri_recursion(k-2) = k + (k-1) + (k-2) + tri_recursion(k-3) ... = k + (k-1) + (k-2) + ... + 0

所以tri_recursion(k)是0到k之间所有数字的总和。

请注意,0和k之间所有数字的总和等于k*(k+1) / 2,所以tri_recursion(6) = 6 * 7 / 2 = 21