之前都是用循环画的,今天了解到用递归去画,一时间有点懵
不太理解递归的用法
递归要有终止条件
先要定义函数(参数)
终止条件
调用函数
import turtle as t
def draw_sierpinski(triangle,degree):#triangle三角形的三个顶点坐标,degree深度、度
a,b,c=triangle
draw_triangle(a,b,c)#绘制三角形外轮廓
if degree==0:#终止条件
return
else:
d=get_midpoint(a,b)
e=get_midpoint(b,c)
f=get_midpoint(c,a)#取中点坐标
draw_sierpinski([a,d,f],degree-1)
draw_sierpinski([d,b,e],degree-1)
draw_sierpinski([f,e,c],degree-1)#递归调用
def draw_triangle(a,b,c):#自定义绘制三角形函数
ax,ay=a
bx,by=b
cx,cy=c
t.penup()
t.goto(ax,ay)
t.pendown()
t.goto(bx,by)
t.goto(cx,cy)
t.goto(ax,ay)
t.penup()
def get_midpoint(m,n):
mx,my=m
nx,ny=n
return(mx+nx)/2,(my+ny)/2
triangle=[[0,200],[-200,-100],[200,-100]]
draw_sierpinski(triangle,3)