算法分析与设计实验:科赫雪花实验
一、实验目的
1、熟悉python编程环境,包括程序安装
2、熟悉python基本语法
3、递归算法程序分析与调试
二、实验工具
Win10操作系统、python3.7编译环境、IDLE编译器
三、实验内容
本次实验是利用递归算法,用python中的绘图库turtle,实现画出科赫雪花。雪花曲线的构造从一个正三角形开始,把每条边分成三等份,然后以各边的中间长度为底边,分别向外作正三角形,再把“底边”线段抹掉,这样就得到一个六角形,它共有12条边,再把每条边分成三等份,以各中间部分的长度为底边,向外作正三角形后,抹掉底边线段,反复进行这一过程,就会得到有个“雪花”样子的科赫曲线。
四、实验过程
本实验采用递归算法完成曲线绘制:如果n=0,直接画出长度为L的直线。如果n=1(第一次迭代),画出长度为L/3的线段;画笔向左转60度再画长度为L/3长的线段;画笔向右转120度画长度为L/3长的线段;画笔再向左转60度画出长度为L/3的线段。如果n>1,第n次迭代相当于:第n-1次迭代;画笔左转60度;n-1次迭代;画笔右转120度;第n-1次迭代;画笔左转60度;第n-1次迭代。本次实验设n=3,用for遍历循环角度,在最外层的循环执行后,再调用下一阶及相应的长度。程序代码如下:
import turtle as t
def koch(size, order):
if order == 0:
t.forward(size)
else:
for angle in [0, 60, -120, 60]:
t.left(angle)
koch(size/3, order-1)
def main():
t.setup(800, 800)
t.penup()
t.goto(-120, 100)
t.pendown()
t.pensize(2)
t.pencolor('green')
koch(300, 3)
t.right(120)
koch(300, 3)
t.right(120)
koch(300, 3)
t.done()
t.hideturtle()
main()
五、实验结果与分析