Sierpinski地毯算法实现
时间: 2024-06-02 14:08:58 浏览: 19
Sierpinski地毯是一种分形图案,可以通过递归的方式来生成。以下是一个简单的实现代码:
```python
import turtle
def draw_sierpinski_carpet(length, depth):
if depth == 0:
turtle.begin_fill()
for i in range(4):
turtle.forward(length)
turtle.left(90)
turtle.end_fill()
else:
draw_sierpinski_carpet(length/3, depth-1)
turtle.forward(length/3)
draw_sierpinski_carpet(length/3, depth-1)
turtle.backward(length/3)
turtle.left(90)
turtle.forward(length/3)
turtle.right(90)
draw_sierpinski_carpet(length/3, depth-1)
turtle.left(90)
turtle.backward(length/3)
turtle.right(90)
turtle.backward(length/3)
draw_sierpinski_carpet(length/3, depth-1)
turtle.forward(length/3)
turtle.speed(0)
turtle.color('black', 'gray')
turtle.penup()
turtle.goto(-200, 200)
turtle.pendown()
draw_sierpinski_carpet(400, 4)
turtle.done()
```
这个代码使用了 Python 的 turtle 库来绘制图案。`draw_sierpinski_carpet` 函数接受两个参数:`length` 是正方形的边长,`depth` 是递归的深度。当深度为 0 时,绘制一个实心正方形;否则,递归绘制 8 个更小的正方形,其中中间的一个不绘制。
运行这个代码,可以得到以下结果:
![Sierpinski地毯](https://i.ibb.co/jR8QkM5/sierpinski-carpet.png)