首页 > 解决方案 > 使用 Python 的 turtle 模块进行递归(pythonds book)

问题描述

我正在使用 Python 使用算法和数据结构解决问题,并且对递归部分有点困惑。代码如下:

def tree(branchLen,t):
    if branchLen > 5:
        t.forward(branchLen)
        t.right(20)
        tree(branchLen-15,t)
        t.left(40)
        tree(branchLen-15,t)
        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(75,t)
    myWin.exitonclick()

main()

我理解递归的想法,我只是在这个特定问题中无法将其可视化。当这个程序执行并调用 tree(75,t) 时,它应该按以下步骤运行:

  1. branchLen > 5 因此执行第 3 行
  2. t.forward(75)
  3. t.right(20)
  4. tree(75-15,t) 这就是我产生困惑的地方,然后它会返回并一遍又一遍地执行第 2-3 行直到 branchLen < 5?所以步骤是
  5. t.forward(60)
  6. t.right(20)
  7. 树(60-15,吨)
  8. t.forward(45) 等等,直到 branchLen < 5 然后执行第 6 行?我是否正确理解这一点?任何帮助将不胜感激!

标签: pythonrecursionpython-turtle

解决方案


推荐阅读