Turtle(python)画分形树理解递归

递归思想

递归可以把一个复杂问题转化为一个与原问题相似的规模较小的问题,通过自己调用自己,找到最终解决这个问题的条件,达到判断条件时返回。

通过分形树理解递归

turtle用法参考其他博主滴博客:https://blog.csdn.net/qq_32067045/article/details/80243430
python中的 turtle画图很方便,画分形树的思想也可以用到二叉树的遍历中,我们先来看这样一颗分形树
在这里插入图片描述
我们可以发现树的分支都是一样的,具有相同的结构
在这里插入图片描述
先考虑简单的最底层的两个分支,我们可以让turtle一开始向上走一段初始距离

def draw_tree(size):
    if size > SIZE_TREE:  # 如果size在范围内,那么可以画树
        # 右边

        turtle.forward(size) 	# 先向前走size
        turtle.right(20)	 	# 右转20°
        draw_tree(size / 1.5)	# 再继续右转 长度减半 走不动时往左边转40°
        # 左边
        turtle.left(40) 		# 左转40°
        draw_tree(size / 1.5)   # 画左边的树 长度减半 走不动时 右转20回到原来角度

        # 回到之前的树枝
        turtle.right(20)
        turtle.backward(size) # 退回去画的是原来的长度

按步骤是这样走的
在这里插入图片描述

我们在主函数中可以设置turtle的速度,让它走慢点,方便我们看轨迹:
在这里插入图片描述
可以更改最后树枝的颜色

"""
    作者:MO
    功能:绘制分形树
    版本:1.0
    日期:2019/3/05
"""
import turtle

SIZE_TREE = 10


def draw_tree(size):
    if size > SIZE_TREE:
        # 右边

        turtle.forward(size)
        turtle.right(20)
        draw_tree(size / 1.5)
        # 左边
        turtle.left(40)
        draw_tree(size / 1.5)

        # 回到之前的树枝
        turtle.right(20)
        # 给最后的树枝画绿色
        if size / 2 <= SIZE_TREE:
            turtle.color('green')
        else:
            turtle.color('brown')
        turtle.backward(size)


def main():
    turtle.speed(1)
    turtle.hideturtle()
    turtle.penup()
    # 方向向上
    turtle.left(90)
    turtle.backward(100)
    turtle.showturtle()
    # 画笔隐形
    # 画笔有效
    turtle.pendown()
    turtle.pensize(2)
    turtle.color('brown')
    # 给出根的长度
    draw_tree(50)


if __name__ == '__main__':
    main()
turtle.done()

  • 34
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值