在递归代码中,为避免三角形或其他形状的重复绘制,可以使用以下两种方法:
def draw_triangle(x1, y1, x2, y2, x3, y3):
# 绘制三角形
...
# 将三角形顶点处的颜色设置为透明色
turtle.penup()
turtle.goto(x1, y1)
turtle.pendown()
turtle.pencolor("white")
turtle.dot(5)
turtle.penup()
turtle.goto(x2, y2)
turtle.pendown()
turtle.dot(5)
turtle.penup()
turtle.goto(x3, y3)
turtle.pendown()
turtle.dot(5)
这样,在递归绘制时,当重复到已经绘制过的三角形时,三角形的顶点会被涂成透明色,即不会再次绘制。
drawn_triangles = []
def draw_triangle(x1, y1, x2, y2, x3, y3):
# 判断是否已绘制过
if (x1, y1) in drawn_triangles and (x2, y2) in drawn_triangles and (x3, y3) in drawn_triangles:
return
# 绘制三角形
...
# 记录已绘制的三角形顶点
drawn_triangles.append((x1, y1))
drawn_triangles.append((x2, y2))
drawn_triangles.append((x3, y3))
# 递归绘制三角形
draw_triangle(x1, y1, (x1+x2)/2, (y1+y2)/2, (x1+x