马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 古一2022 于 2022-8-31 18:26 编辑
先上代码:import turtle
def fb(n):
"""斐波那契数递归函数"""
if n <= 1:
return n
return fb(n-1) + fb(n-2)
def draw_fb(n):
"""绘制斐波那契黄金矩形"""
width = 10 # 1 单位的宽度,可看作放大倍数
to_angle = 270 # 初始海龟朝向,朝南
pos = (0, 0) # 初始海龟坐标
for i in range(1, n+1):
x = fb(i)
x *= width
ta = to_angle # 每个矩形的初始朝向
# 回到每一个矩形的起始点,此时抬起画笔,不绘画
turtle.penup()
turtle.setpos(pos)
turtle.pendown()
# 绘制矩形的四条边
for j in range(4):
turtle.setheading(ta) # 设置矩形初始朝向
turtle.forward(x) # 绘制边
if j == 1: # 每个矩形第二条边的终点为下一个矩形的起点
pos = turtle.pos() # 记录下一个矩形的起点
ta += 90 # 绘制完一条边后转 90°
turtle.setheading(to_angle) # 复位海龟朝向,准备绘制四分之一圆
turtle.circle(x, 90) # 绘制四分之一圆
to_angle += 90 # 绘制完一条矩形后转 90°
turtle.exitonclick()
if __name__ == '__main__':
draw_fb(8)
效果图展示:
|