如何理解这个涉及递归的 Python 代码的输出?

sdy_159

这是代码片段:

(这只是我为了解递归如何工作而编写的示例代码,因此是 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

这个涉及递归和数组的Java代码如何工作?

如何从Perl程序执行python代码并使用python代码的输出

如何验证python函数中行代码的输出

如何理解这个python代码,非常感谢

这个python代码的输出是什么?我很困惑

Python:给定代码的输出

如何在python代码的输出中打印名称?

如何将python代码的输出重定向到文件

如何使用文件导入python请求以输出状态代码

如何通过电子邮件发送python代码输出?

如何从 Visual Studio 中的给定 .pyd 输出构造 python 代码?

如何理解这个scala代码?

代码9的输出如何?

如何调试这个 Python 代码?

Python代码输出结果的原因

Python代码输出错误

更改我的代码输出-Python

我如何获取以下python代码以输出worldmaps.info(似乎已回答了这个问题,但对我不起作用)

为什么这个 Python 代码不起作用?它不返回任何输出

请帮助我理解 Python 3 上的这个输出

涉及虚函数的C ++代码输出的说明

用python读取一个简单的.txt文件,为什么这个简单的代码输出每一行?python如何知道它应该这样做?

我无法理解这个位操作 python 代码

如何在 Visual Studio 中运行一行 Python 代码并在终端中获取输出?

如何在自定义窗口中显示 python 代码的输出?

如何在Python中从子进程获取返回代码和输出?

如何在python中调用外部程序并检索输出和返回代码?

使用Ansible Python API,如何在代码中访问任务级别的输出?

在下面的代码示例中,如何计算Python中输出的每个字典值?