python以函数递归的形式实现谢尔宾斯基三角形的代码
时间: 2024-06-13 18:04:25 浏览: 178
下面是Python以函数递归的形式实现谢尔宾斯基三角形的代码:
```
import turtle
def drawTriangle(points, color, myTurtle):
myTurtle.fillcolor(color)
myTurtle.up()
myTurtle.goto(points[0][0], points[0][1])
myTurtle.down()
myTurtle.begin_fill()
myTurtle.goto(points[1][0], points[1][1])
myTurtle.goto(points[2][0], points[2][1])
myTurtle.goto(points[0][0], points[0][1])
myTurtle.end_fill()
def getMid(p1, p2):
return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
def sierpinski(points, degree, myTurtle):
colormap = ['blue', 'red', 'green', 'white', 'yellow', 'violet', 'orange']
drawTriangle(points, colormap[degree], myTurtle)
if degree > 0:
sierpinski([points[0], getMid(points[0], points[1]), getMid(points[0], points[2])], degree-1, myTurtle)
sierpinski([points[1], getMid(points[0], points[1]), getMid(points[1], points[2])], degree-1, myTurtle)
sierpinski([points[2], getMid(points[2], points[1]), getMid(points[0], points[2])], degree-1, myTurtle)
myTurtle = turtle.Turtle()
myWin = turtle.Screen()
myPoints = [[-100,-50],[0,100],[100,-50]]
sierpinski(myPoints, 3, myTurtle)
myWin.exitonclick()
```
其中,`drawTriangle()`函数用于绘制三角形,`getMid()`函数用于计算两点之间的中点,`sierpinski()`函数用于递归绘制谢尔宾斯基三角形。在`sierpinski()`函数中,首先绘制当前三角形,然后递归绘制三个子三角形,直到递归深度为0。
阅读全文