【发布时间】:2018-07-27 21:32:09
【问题描述】:
我有以下简单的递归函数:
def draw_interval(center_length):
if center_length > 0:
print('first value: {}'.format(center_length))
draw_interval(center_length - 1)
print('second value: {}'.format(center_length))
draw_interval(3)
输出是:
first value: 3
first value: 2
first value: 1
second value: 1
second value: 2
second value: 3
我的问题是为什么会这样,即使在 center_length > 0 之后,函数也会运行 draw_interval(center_length - 1)
错误的。我已经看到了similar question,但我的问题指向 Python 中递归功能和条件语句的不同角度。
【问题讨论】:
-
我不确定我是否理解您的问题。你会假设其他什么行为?
-
“即使在
center_length > 0为假之后,函数也会运行draw_interval(center_length - 1)”:你为什么这么认为?事实并非如此。 -
如果条件为真,If 语句块运行,我猜,但在打印第一个值:1 后,它继续运行。我在这里遗漏了一些要点吗?
-
值得将您的代码粘贴到 PythonTutor.com 或其他交互式可视化工具中——或者只使用调试器,如果你知道怎么做的话——并逐步进行。一切都应该从此变得更加清晰,比任何人都可以抽象地解释的任何事情都要清楚。
标签: python if-statement recursion data-structures