数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)

谢尔宾斯基Sierpinski三角形

分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔

谢尔宾斯基三角形:作图思路

根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照品字形拼叠而成

由于我们无法真正做出谢尔宾斯基三角形(degree->∞),只能做degree有限的近似图形。
在这里插入图片描述

代码

import turtle

def sierpinski(degree, points):
    colormap = ['blue', 'red', 'green', 'white', 'yellow', 'orange']
    # 等边三角形
    drawTriangle(points, colormap[degree])
    # 最小规模,0直接退出
    if degree > 0:
        # 减小规模 getMid边长减半
        # 调用自身,左上右次序
        sierpinski(degree - 1, {'left': points['left'],
                                'top': getMid(points['left'], points['top']),
                                'right': getMid(points['left'], points['right'])})
        sierpinski(degree - 1, {'left': getMid(points['left'], points['top']),
                                'top': points['top'],
                                'right': getMid(points['top'], points['right'])})
        sierpinski(degree - 1, {'left': getMid(points['left'], points['right']),
                                'top': getMid(points['top'], points['right']),
                                'right': points['right']})


# 绘制等边三角形
def drawTriangle(points, color):
    t.fillcolor(color)
    t.penup()
    t.goto(points['top'])
    t.pendown()
    t.begin_fill()
    t.goto(points['left'])
    t.goto(points['right'])
    t.goto(points['top'])
    t.end_fill()


def getMid(p1, p2):
    return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2)


t = turtle.Turtle()
points = {
    'left': (-200, -100),
    'top': (0, 200),
    'right': (200, -100),
}
sierpinski(5, points)
turtle.done()

在这里插入图片描述

degree=3的绘制过程

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构与算法Python讲义》是一本介绍数据结构和算法的教材,它使用Python语言作为教学工具,旨在帮助读者理解和掌握这两个重要的计算机科学领域。 这本讲义首先介绍了数据结构的概念和基本知识,如数组、链表、栈、队列和树等。对于每种数据结构,讲义都详细说明了其定义、特点和常见操作,并通过实例和代码演示了它们的使用方法。此外,讲义还探讨了如何选择合适的数据结构来解决实际问题,并讨论了不同数据结构之间的比较和权衡。 在介绍完数据结构后,讲义转向算法的讲解。它首先讲解了算法的基本概念和特性,如时间复杂度和空间复杂度,然后深入讲解了常见的算法设计技巧,如递归、分治法、贪心算法和动态规划。对于每种算法,讲义都给出了详细的原理解释和代码实现,并通过实例和练习题帮助读者理解和掌握。 此外,讲义还包含了一些高级主题,如图算法、排序算法和搜索算法。它详细讲解了图的表示方式和常见的图算法,如深度优先搜索和广度优先搜索。对于排序算法,讲义介绍了常见的排序算法,如冒泡排序、插入排序和快速排序,并给出了它们的实现代码。此外,讲义还探讨了搜索算法,如二分搜索和回溯算法,并通过实例说明它们的应用。 总的来说,《数据结构与算法Python讲义》通过简洁明了的语言和丰富的实例,帮助读者理解和掌握数据结构和算法的基本概念和技巧。无论是初学者还是有一定基础的读者,都可以从中受益,提高编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值