【发布时间】:2017-02-02 21:15:12
【问题描述】:
我正在努力提高对递归的理解,视觉表示对我非常有帮助。我有一个递归的树图函数,我希望能够逐步完成它并考虑每个阶段会发生什么。我找到了 IDLE 的调试器,但是一旦调用了递归函数,我似乎无法让它停止。另外,当我单步执行代码时,从 turtle 模块打开了几个窗口,这一切都变得一团糟。
这是否可以使用 IDLE,或者我应该求助于手动编码我需要了解此功能的暂停和日志信息?作为第二个问题,任何人都可以解释这段代码是如何工作的吗?它似乎首先绘制了所有右手分支,我可以遵循,但随后它开始看起来像巫术。
代码如下:
import turtle
def tree(branchLen,t):
if branchLen > 5:
t.forward(branchLen)
t.right(20)
tree(branchLen-15,t)
t.left(40)
tree(branchLen-15,t)
t.right(20)
t.backward(branchLen)
def main():
t = turtle.Turtle()
t.speed(1)
myWin = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(75,t)
myWin.exitonclick()
main()
【问题讨论】:
-
我不使用 IDLE,所以我无法帮助你。理解
tree的关键在于,在(子)树的绘制完成时,海龟已被放回其原始位置和航向。所以每次递归调用都不会干扰当前位置和航向。
标签: python debugging recursion turtle-graphics