python - 使用 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) 时,它应该按以下步骤运行:
- branchLen > 5 因此执行第 3 行
- t.forward(75)
- t.right(20)
- tree(75-15,t) 这就是我产生困惑的地方,然后它会返回并一遍又一遍地执行第 2-3 行直到 branchLen < 5?所以步骤是
- t.forward(60)
- t.right(20)
- 树(60-15,吨)
- t.forward(45) 等等,直到 branchLen < 5 然后执行第 6 行?我是否正确理解这一点?任何帮助将不胜感激!
解决方案
推荐阅读
- c++ - 在 Visual Studio 2019 C++ 中读取 txt 文件
- mysql - MySQL 通过第一个表中的 2 列 id 连接 3 个表
- javascript - 使用索引拆分解析文本流日志
- python - 在同一个服务中运行 celery 和 aiohttp
- swift - 从 Swift 函数返回混合值类型时遇到问题
- java - 是否可以重写代码,使时间复杂度为 O(nlogn)?
- c++ - 将 ROOT 与 CMake 集成
- python - 将多分辨率图像馈送到神经网络 Pytorch
- wordpress - WordPress NGINX 服务器上的 Yoast XML 站点地图
- python - 没有重复字符的最长子字符串 - 代码在运行期间有效,但在提交相同的测试用例时失败