为什么这个递归打印多行?
Why this recursion prints multiple lines?
谁能解释一下这个 Python 递归代码是如何工作的?
我只是不明白为什么它打印六个数字而不是一个(21)...为什么它以 1 开头?
抱歉,我很菜鸟,我知道...非常感谢您的帮助。
代码:
def func(k):
if(k > 0):
result = k + func(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Results")
func(6)
输出:
Recursion Results
1
3
6
10
15
21
嗯,每次用 k > 0
调用 func(k)
时,都会调用 print
语句。 func
被重复或递归调用,所以 print
被重复调用,所以你看到多行。
从您的 func
中删除 print
并执行 print(func(6))
以仅显示最终结果。
基本上,当您的代码运行第 3 行时 (result = k + func(k - 1)),它首先查看 fun(k-1)(如果您从 6 开始,则为 5),所以它运行它直到你再次到达 (result = k + func(k - 1)) ,其中它再次优先考虑 fun(k-1) ...直到你的 fun(k-1) == fun(0).
在 fun(0) 处,代码运行您的 else 语句(因此它不打印任何内容),然后返回到 fun(1),其中它将在返回值之前打印 1...直到您得到玩得开心(6).
如果您想逐步查看代码的作用,我建议您使用 python tutor,这是一个可让您逐步查看代码中发生的情况的网站。
学习愉快python!!!
(ps,这是站点的 link:https://pythontutor.com/visualize.html#mode=edit)
谁能解释一下这个 Python 递归代码是如何工作的? 我只是不明白为什么它打印六个数字而不是一个(21)...为什么它以 1 开头? 抱歉,我很菜鸟,我知道...非常感谢您的帮助。
代码:
def func(k):
if(k > 0):
result = k + func(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Results")
func(6)
输出:
Recursion Results 1 3 6 10 15 21
嗯,每次用 k > 0
调用 func(k)
时,都会调用 print
语句。 func
被重复或递归调用,所以 print
被重复调用,所以你看到多行。
从您的 func
中删除 print
并执行 print(func(6))
以仅显示最终结果。
基本上,当您的代码运行第 3 行时 (result = k + func(k - 1)),它首先查看 fun(k-1)(如果您从 6 开始,则为 5),所以它运行它直到你再次到达 (result = k + func(k - 1)) ,其中它再次优先考虑 fun(k-1) ...直到你的 fun(k-1) == fun(0).
在 fun(0) 处,代码运行您的 else 语句(因此它不打印任何内容),然后返回到 fun(1),其中它将在返回值之前打印 1...直到您得到玩得开心(6).
如果您想逐步查看代码的作用,我建议您使用 python tutor,这是一个可让您逐步查看代码中发生的情况的网站。
学习愉快python!!!
(ps,这是站点的 link:https://pythontutor.com/visualize.html#mode=edit)