在python中使用turtle创建分形树的右侧
我只是一个初学者,正在尝试使用python的turtle通过生成递归函数来生成分形树。我想我已经得到了这个函数,它可以使我的分形图的整个左边,但它不能使右边。我该如何解决这个问题?任何和所有的建议将不胜感激在python中使用turtle创建分形树的右侧,python,function,recursion,turtle-graphics,fractals,Python,Function,Recursion,Turtle Graphics,Fractals,我只是一个初学者,正在尝试使用python的turtle通过生成递归函数来生成分形树。我想我已经得到了这个函数,它可以使我的分形图的整个左边,但它不能使右边。我该如何解决这个问题?任何和所有的建议将不胜感激 def svTree( trunkLength, levels ): """ uses the turtle drawing functions to return a tree with a specified number of levels input: two int
def svTree( trunkLength, levels ):
""" uses the turtle drawing functions to return a tree with a specified number of levels
input: two integers, trunkLength and levels
"""
newtrunkLength = trunkLength *.5
forward(trunkLength)
if levels ==1:
penup()
else:
left(45)
forward(trunkLength * 0.5)
backward(trunkLength * 0.5)
right(90)
forward(trunkLength * 0.5)
backward(trunkLength * 0.5)
left(90)
return svTree(newtrunkLength,levels-1)
在沿着左分支递归之前保存海龟的位置,然后重置海龟并绘制右分支:
def svTree(length, level):
if level == 1:
return
#draw level's trunk
down()
forward(length)
up()
#save turtle position and heading
pos = position()
hdg = heading()
#draw left branch
left(45)
svTree(length / 2, level - 1)
#restore turtle position and heading
setposition(pos)
setheading(hdg)
#draw right branch
right(45)
svTree(length / 2, level - 1)
如果不想在每次方法调用时保存位置和标题,还可以确保海龟光标在每次方法调用时开始的位置和标题处结束
def svTree(length, level):
if level == 1:
return
#draw level's trunk
down()
forward(length)
up()
#draw left branch
left(45)
svTree(length/2, level-1)
#draw right branch
right(90)
svTree(length/2, level-1)
#return cursor to state when function called
left(45)
backward(length)
由于每个递归绘制两个分支,我想您将需要两个调用
svTree
,而不仅仅是一个调用。