python 递归函数在加法方面如何工作?

How python recursive function works in terms of addition?

def tri_recursion(k):
    if (k > 0):
        result = k + tri_recursion(k - 1)

        print(result)

    else:
        result = 0
    return result

print("\n\n Recursion Example results ")

tri_recursion(7)

输出将所有数字自行相加,直到长度 = 7。但我不知道该函数是如何工作的。 我的意思是如果 k = tri_recursion(7) (7-1 = 6)。 那么为什么输出中的第一个数字是 1, 3, 6, 10, 15, 21,

我是编程新手,递归函数的概念一点都不清楚。 谁能解释一下这段代码是如何工作的?

这里发生了什么?

您最初使用 k = 7 调用函数。

  1. 函数发现给定值 k = 7 > 0,因此计算 7 + 如果调用 6 函数的结果。 为了确定后者,它用k = 6调用自己。

  2. 该函数发现给定值 k = 6 > 0,因此计算 6 + 如果用 5 调用函数的结果。 为了确定后者,它用k = 5调用自己。

  3. 该函数发现给定值 k = 5 > 0,因此计算 5 + 如果使用 4 调用函数的结果。 为了确定后者,它用k = 4调用自己。

  4. 该函数发现给定值 k = 4 > 0,因此计算 4 + 如果使用 3 调用函数的结果。 为了确定后者,它用k = 3调用自己。

  5. 该函数发现给定值 k = 3 > 0,因此计算 3 + 如果使用 2 调用函数的结果。 为了确定后者,它用k = 2调用自己。

  6. 该函数发现给定值 k = 2 > 0,因此计算 2 + 如果使用 1 调用函数的结果。 为了确定后者,它用k = 1调用自己。

  7. 该函数发现给定值 k = 1 > 0,因此计算 1 + 如果用 0 调用函数的结果。 为了确定后者,它用k = 0调用自己。

  8. 函数发现给定值 k = 0 不是 > 0,因此 returns 0。

所以

  • 第 7 点中的函数 运行 计算 1 + 0 = 1。
  • 第 6 点中的函数 运行 计算 2 + 1 = 3。
  • 第 5 点中的函数 运行 计算 3 + 3 = 6。
  • 第 4 点中的函数 运行 计算 4 + 6 = 10。
  • 第 3 点中的函数 运行 计算 5 + 10 = 15。
  • 第2点的函数运行计算出6 + 15 = 21。
  • 第 1 点中的函数 运行 计算 7 + 21 = 28。

最终,“原始函数调用”返回了28,但被丢弃了。您看到它只是因为函数内部的 print(result)

与其他任何递归函数调用相比,原理上没有什么不同。