当前位置: 移动技术网 > IT编程>脚本编程>Python > Python Turtle画分形树理解递归

Python Turtle画分形树理解递归

2020年04月13日  | 移动技术网IT编程  | 我要评论

冬至节的雪精灵,错缘电视剧全集,7v影视

递归思想

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

通过分形树理解递归

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()

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网