用递归画谢尔宾斯基三角形

之前都是用循环画的,今天了解到用递归去画,一时间有点懵

不太理解递归的用法

递归要有终止条件

先要定义函数(参数)

终止条件

调用函数

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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部