这是代码段:
(这只是我编写的示例代码,用于了解递归的工作原理,因此也涉及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的值最后会减小?
我认为问题是我不正确理解递归的概念。
答案 0 :(得分:1)
因为这部分将打印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 然后再做一次
答案 1 :(得分:0)
这不会解释递归,但是python的注释键入为“#”而不是“ //”。 Python不是c ++ / c / javascript / java。