这是代码片段:
(这只是我为了解递归如何工作而编写的示例代码,因此是 var 和函数名称。)
def b(t):
t += 1
print("t ", t)
for i in range(2):
if (t <= 3):
b(t)
print("t_again ", t)
return t
def a(): // call this function from main
t = 0
t1 = b(t)
return t1
这是我认为的输出:
t 1
t 2
t 3
t 4
t_again 4 //execute return statement after this
但实际输出是:
t 1
t 2
t 3
t 4
t_again 4 # 1
t 4
t_again 4
t_again 3
t 3
t 4
t_again 4
t 4
t_again 4
t_again 3
t_again 2
t 2
t 3
t 4
t_again 4
t 4
t_again 4
t_again 3
t 3
t 4
t_again 4
t 4
t_again 4
t_again 3
t_again 2
t_again 1
我不明白为什么在打印上面带有注释编号 1 的行后递归没有停止。
另外,为什么 t 的值最终会减小?
我认为问题是我没有正确理解递归的概念。
因为这部分会打印 1
print("t ", t)
for i in range(2):
if (t <= 3):
b(t)
print("t_again ", t)
然后再次转到功能 b 并打印 2。
在您的情况 4 中达到最大递归债务后,它将再次打印“4”并返回,从递归深度 4 返回后,您的代码处于深度 3 并打印“4”、“4 再次”、“3 再次”和回到深度 2 并重新做一遍
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句