【发布时间】:2021-02-09 19:41:52
【问题描述】:
我需要帮助了解此功能的工作原理:
import turtle
annie = turtle.Turtle()
def draw(t, length, n):
if n == 0:
return
angle = 50
t.fd(length*n)
t.lt(angle)
draw(t, length, n-1)
t.rt(2*angle)
draw(t, length, n-1)
t.lt(angle)
t.bk(length*n)
draw(annie, 30, 4)
turtle.mainloop()
此函数创建一个带有大 Y 形分支的对称分支图形,两个较小的 Y 形分支悬挂在较大 Y 形分支的每个臂的末端。该函数以“海龟”(当它在屏幕上移动时在其后面留下一条线的小箭头)从它绘制的最后一个较小分支的尖端向后四次结束,并在它从较大分支的开头开始的地方结束分支。那么如果 self 在该语句之前调用从 n 的值中减去 1,那么在函数完成时 n = 4 是如何实现的呢?第一次自我调用是否会遍历函数的前几行,直到 n = 0,然后遍历函数的其余部分?在这种情况下,第二个自调用语句的第一个实例的 n 值是多少? 4? 0?我想我显然误解了一些东西,并希望有任何资源来帮助我了解我在做什么。
【问题讨论】:
-
为什么不在函数开头打印
n看看呢?还是使用调试器逐行执行代码? -
pythontutor.com 也可能有帮助 - 只是在这种情况下不适用于龟类
-
我确实尝试使用 print 语句来跟踪 n 的值,但仍然同样困惑。
-
您可能想了解更多关于
pdb包stackoverflow.com/questions/1623039/python-debugging-tips
标签: python recursion turtle-graphics execution