#import Python turtle module #More info see https://docs.python.org/2/library/turtle.html import turtle ##Make turtle t draw a Koch fractal of 'order' and 'size'. def drawKoch(t, order, size): if order == 0: # The base case is just a straight line #Move the turtle forward by size #in the direction the turtle is headed. t.forward(size) else: drawKoch(t, order-1, size/3) # Go 1/3 of the way and draw a Koch pattern with lower order and 1/3 size t.left(60) #Turn turtle left by 60 degrees. drawKoch(t, order-1, size/3) t.right(120) #Turn turtle right by 120 degrees. drawKoch(t, order-1, size/3) t.left(60) #Turn turtle left by 60 degrees. drawKoch(t, order-1, size/3) ##Initialize the turtle t = turtle.Turtle() t.speed(6) #Set the turtle's speed. 1 is slow and 10 is fast. t.color("blue") #Set the turtle's color. t.pensize(3) #Set the pen size myWin = turtle.Screen() #Create the screen ##Set values for order and size order = 3 size = 300 ##Initialize the pen position t.up() #Pull the pen up - no drawing when moving. t.backward(size/2) #move the pen backward by size/2 t.down() #Pull the pen down - drawing when moving. t.left(60) #Turn turtle left by 60 degrees. ##drawKoch(t, order, size) could only draw one side of the Koch snowflake ##So we need to use drawKoch(t, order, size) 3 times to draw a Koch snowflake drawKoch(t, order, size) t.right(120) #Turn turtle right by 120 degrees. drawKoch(t, order, size) t.right(120) #Turn turtle right by 120 degrees. drawKoch(t, order, size) ##exit the drawing screen myWin.exitonclick()
Program Revised from http://openbookproject.net/thinkcs/python/english3e/recursion.html