递归-分形树

import turtle


def tree(branch_len):
    if branch_len > 5:
        print("上去就是前进...", end=" ")
        print(branch_len)
        t.forward(branch_len)  # 前进距离为树枝长度
        t.right(30)  # 右转30度
        print("右转30°之后aaa, 前进...", end=" ")
        print(branch_len)
        tree(branch_len - 15)  # 递归, 树枝长度减15

        t.left(60)  # 左转40度
        print("左转30°之后, 前进...", end=" ")
        print(branch_len - 15)
        tree(branch_len - 15)  # 递归

        t.right(30)  # 右转30度
        print("右转30°之后bbb, 回退...", end=" ")
        print(branch_len)
        t.backward(branch_len)  # 回退距离为当前树枝长度


t = turtle.Turtle()
t.left(90)  # 向左转向90度
t.penup()  # 起笔
t.backward(100)  # 回退100像素
t.pendown()  # 落笔
t.pencolor('green')  # 绿色
t.pensize(2)  # 粗细2像素
tree(60)  # 调用函数, 起始长度为60
t.hideturtle()  # 隐藏画笔
turtle.done()  # 结束
上去就是前进... 60
右转30°之后aaa, 前进... 60
上去就是前进... 45
右转30°之后aaa, 前进... 45
上去就是前进... 30
右转30°之后aaa, 前进... 30
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0

右转30°之后bbb, 回退... 15
左转30°之后, 前进... 15
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
右转30°之后bbb, 回退... 30
左转30°之后, 前进... 30
上去就是前进... 30
右转30°之后aaa, 前进... 30
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
左转30°之后, 前进... 15
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
右转30°之后bbb, 回退... 30
右转30°之后bbb, 回退... 45
左转30°之后, 前进... 45
上去就是前进... 45
右转30°之后aaa, 前进... 45
上去就是前进... 30
右转30°之后aaa, 前进... 30
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
左转30°之后, 前进... 15
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
右转30°之后bbb, 回退... 30
左转30°之后, 前进... 30
上去就是前进... 30
右转30°之后aaa, 前进... 30
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
左转30°之后, 前进... 15
上去就是前进... 15
右转30°之后aaa, 前进... 15
左转30°之后, 前进... 0
右转30°之后bbb, 回退... 15
右转30°之后bbb, 回退... 30
右转30°之后bbb, 回退... 45
右转30°之后bbb, 回退... 60

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值