如何解决需要python递归函数说明,我想知道这段代码如何工作
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)
解决方法
这里会发生什么?
您最初使用k = 7调用该函数。
-
该函数看到给定值k = 7> 0,因此如果用6调用,则计算7 +函数的结果。 为了确定后者,它使用k = 6进行自我调用。
-
该函数发现给定值k = 6> 0,因此如果用5调用,则计算6 +函数的结果。 为了确定后者,它用k = 5调用自己。
-
该函数看到给定值k = 5> 0,因此如果用4调用,则计算5 +函数的结果。 为了确定后者,它使用k = 4进行自我调用。
-
该函数看到给定值k = 4> 0,因此如果用3调用,则计算4 +函数的结果。 为了确定后者,它用k = 3调用自己。
-
该函数看到给定值k = 3> 0,因此如果用2调用,则计算3 +函数的结果。 为了确定后者,它用k = 2调用自己。
-
该函数看到给定值k = 2> 0,因此如果用1调用,则计算2 +函数的结果。 为了确定后者,它用k = 1来调用自己。
-
该函数看到给定值k = 1> 0,因此如果用0调用,则计算1 +函数的结果。 为了确定后者,它使用k = 0进行自我调用。
-
该函数发现给定值k = 0不大于0,因此返回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)
看到它。
与其他任何递归函数调用相比,该原理没有什么不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。