"""
利用递归函数绘制分形树
"""
import turtle
"""
假设在length是25时的循环里,绘制右边函数那一块的draw_branch先向右绘制了长度尾10的右叉
但跳过了这次嵌套里的右叉、左叉(因为都是-5),只转了弯,于是返回到原来树枝。
这一步结束之后,再进入length=25时候的绘制左侧树枝,即左转40度画10厘米。
在左侧这一块的draw_branch里,绘制完10厘米,也只是转了几个弯,无法画图(-5),
贡献了回来(这块函数运行完表现为画了10厘米,回来10厘米)。
这个循环里length还是25,于是转20度退回25回到了第一个叉口,length=40时的绘制右边树枝结束了。
再运行length=40时,绘制左边函数,同上。
"""
def draw_branch(branch_length):
if branch_length > 5:
# 绘制右边树枝
turtle.forward(branch_length)
turtle.right(20)
draw_branch(branch_length - 15)
#length=25时,上面这个函数表现向右画了10又回来10
# 绘制左侧树枝
turtle.left(40)
draw_branch(branch_length - 15)
#这个函数运行完表现为画了10,回来10厘米
#返回之前的树枝
turtle.right(20)
turtle.backward(branch_length)
#转了20度,回来25,相当于回到第一个叉口
def main():
turtle.left(90)
draw_branch(40)
turtle.exitonclick()
if name == 'main':
main()
再画大一点只用把40改成100