Python分形树递归到迭代



我正在尝试制作一个与此代码产生相同输出的代码,但它是迭代的。我想的都试过了。有人能帮忙吗。

这是代码:

import turtle
def tree(branchLen,t):
if branchLen > 1:
t.forward(branchLen)
t.right(20)
tree(branchLen-10,t)
t.color("blue")
t.left(40)
tree(branchLen-10,t)
t.color("red")
t.right(20)
t.backward(branchLen)
def main():
t = turtle.Turtle()
myWin = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(40,t)
myWin.exitonclick()
main()

如果你想让它迭代,你可以使用这个:

import turtle

def tree(branch_len, t):
branches = []
t.forward(branch_len)
branches.append({'x': t.xcor(),
'y': t.ycor(),
'angle': t.heading()})
while branch_len > 1:
new_branches = []
for branch in branches:
t.up()
t.goto(branch.get('x'), branch.get('y'))
t.setheading(branch.get('angle'))
t.down()
t.right(20)
t.forward(branch_len)
new_branches.append({'x': t.xcor(),
'y': t.ycor(),
'angle': t.heading()})
t.up()
t.goto(branch.get('x'), branch.get('y'))
t.down()
t.left(40)
t.forward(branch_len)
new_branches.append({'x': t.xcor(),
'y': t.ycor(),
'angle': t.heading()})
branches = new_branches
branch_len -= 10

def main():
t = turtle.Turtle()
my_win = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(40,t)
my_win.exitonclick()

if __name__ == '__main__':
main()

最新更新