在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

我只是一个初学者,正在尝试使用python的turtle通过生成递归函数来生成分形树。我想我已经得到了这个函数,它可以使我的分形图的整个左边,但它不能使右边。我该如何解决这个问题?任何和所有的建议将不胜感激

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
,而不仅仅是一个调用。