用python画雪花 科赫曲线递归_python中使用递归实现koch曲线绘制

python 中使用递归绘制koch曲线

koch曲线是由瑞典数学家Helge von Koch,在1904年发表的“从初等几何构造的一条没有切线的连续曲线”的论文中提出的。它的描述如下:

1、指定一条线段的长度(L);

2、将这条线段三等分,并以中间的线段为底边构造一个等边三角形,然后去掉底边;(此时曲线的长度为4/3L);

3、对2中生成的曲线的每一条边重复2的操作(每操作一次称为一次迭代)。

所以koch曲线可以在有限的空间里达到无线长,这是它的特点。由于它的外形像雪花,所以又称“雪花曲线”。

那么在计算机中用python语言如何绘制呢?先分析下算法:(n 迭代次数 ; L 直线长度)

1、如果n=0,直接画出L长的直线即可;

2、如果n=1(第一次迭代),画出长度为L/3的线段;画笔向左转60度再画长度为L/3长的线段;画笔向右转120度画长度为L/3长的线段;画笔再向左转60度画出长度为L/3的线段;(基础图形)

3、如果n>1,第n次迭代相当于:n-1次迭代;画笔左转60度;n-1次迭代;画笔右转120度;n-1次迭代;画笔左转60度;n-1次迭代。(共7步操作)

根据上面的算法,就可以设计python里的程序去实现,代码如下:

import turtle

tr = turtle.getturtle()

def koch(n,len):

if(n==0):

tr.forward(len)

elif(n==1):

tr.forward(len/3.0)

tr.left(60)

tr.forward(len/3.0)

tr.right(120)

tr.forward(len/3.0)

tr.left(60)

tr.forward(len/3.0)

else:

koch(n-1,len/3.0)

tr.left(60)

koch(n-1,len/3.0)

tr.right(120)

koch(n-1,len/3.0)

tr.left(60)

koch(n-1,len/3.0)

koch(4,300)    #迭代次数,直线长度

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值