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 调用函数。
函数发现给定值 k = 7 > 0,因此计算 7 + 如果调用 6 函数的结果。
为了确定后者,它用k = 6调用自己。
该函数发现给定值 k = 6 > 0,因此计算 6 + 如果用 5 调用函数的结果。
为了确定后者,它用k = 5调用自己。
该函数发现给定值 k = 5 > 0,因此计算 5 + 如果使用 4 调用函数的结果。
为了确定后者,它用k = 4调用自己。
该函数发现给定值 k = 4 > 0,因此计算 4 + 如果使用 3 调用函数的结果。
为了确定后者,它用k = 3调用自己。
该函数发现给定值 k = 3 > 0,因此计算 3 + 如果使用 2 调用函数的结果。
为了确定后者,它用k = 2调用自己。
该函数发现给定值 k = 2 > 0,因此计算 2 + 如果使用 1 调用函数的结果。
为了确定后者,它用k = 1调用自己。
该函数发现给定值 k = 1 > 0,因此计算 1 + 如果用 0 调用函数的结果。
为了确定后者,它用k = 0调用自己。
函数发现给定值 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)
。
与其他任何递归函数调用相比,原理上没有什么不同。
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 调用函数。
函数发现给定值 k = 7 > 0,因此计算 7 + 如果调用 6 函数的结果。 为了确定后者,它用k = 6调用自己。
该函数发现给定值 k = 6 > 0,因此计算 6 + 如果用 5 调用函数的结果。 为了确定后者,它用k = 5调用自己。
该函数发现给定值 k = 5 > 0,因此计算 5 + 如果使用 4 调用函数的结果。 为了确定后者,它用k = 4调用自己。
该函数发现给定值 k = 4 > 0,因此计算 4 + 如果使用 3 调用函数的结果。 为了确定后者,它用k = 3调用自己。
该函数发现给定值 k = 3 > 0,因此计算 3 + 如果使用 2 调用函数的结果。 为了确定后者,它用k = 2调用自己。
该函数发现给定值 k = 2 > 0,因此计算 2 + 如果使用 1 调用函数的结果。 为了确定后者,它用k = 1调用自己。
该函数发现给定值 k = 1 > 0,因此计算 1 + 如果用 0 调用函数的结果。 为了确定后者,它用k = 0调用自己。
函数发现给定值 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)
。
与其他任何递归函数调用相比,原理上没有什么不同。