我正在尝试编写一个递归海龟程序,它将绘制一个分形树,重新创建以下形状:
三个不同深度的正方形应该这样做。我的问题是,有了代码,屏幕上的乌龟还是一动不动。以下是我目前为止的代码,如有任何帮助,我们将不胜感激:
import turtle
def main():
turtle.speed(0)
turtle.screensize(1000,1000)
turtle.exitonclick()
turt = turtle.Turtle()
squares(turt, length, depth)
def squares(t,length, depth):
length = 200
depth = 3
amt = 1
if depth == 0:
return
elif depth == 3:
t.penup()
t.goto(-1000,-1000)
t.forward(length)
t.left(90)
t.forward(length)
t.left(90)
t.forward(length)
t.left(90)
t.forward(length)
squares(t, length/2, depth - 1)
elif depth == 2:
此不完整的
elif
将使代码无法运行:您定义了
^{pr2}$main()
,但未能调用它:需要在main()结束时添加一个显式调用:
如果您实际调用}将在您调用
main()
,这个过早的{squares()
之前将控制权移交给tkinter:exitonclick()
应该是main()
的最后一个语句,或者发生在函数外部main之后。当您重写两个参数时,不会发生递归:因此}永远不会改变,尽管进行了这个测试:
length
和{修复所有这些并不能让你得到一个绘制你想要的分形的程序,但是修复它们可能是必要的第一步。在
要使代码绘制成分形,您需要将对
squares()
的调用与海龟的每个向前运动交错。不是在最后才做:但更像是:
在递归分形中要避免这样的绝对值:
当然,保持你的
pendown()
调用与你的penup()
调用匹配。在相关问题 更多 >
编程相关推荐