python中使用递归实现koch曲线绘制

python 中使用递归绘制koch曲线

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

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

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

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

      因此koch曲线能够在有限的空间里达到无线长,这是它的特色。因为它的外形像雪花,因此又称“雪花曲线”。 递归

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

      一、若是n=0,直接画出L长的直线便可; 数学

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

      三、若是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)    #迭代次数,直线长度

相关文章
相关标签/搜索