import turtle
import random
screen = turtle.Screen()
X = 400
Y = 400
screen.setup(X, Y)
def drawKoch(ttl, length, generation):
if (generation == 0 ):
ttl.fd(generation)
return
else:
drawKoch(ttl, length - 1, generation / 3)
ttl.lt(60)
drawKoch(ttl, length - 1, generation / 3)
ttl.lt(120)
drawKoch(ttl, length - 1, generation / 3)
ttl.lt(60)
drawKoch(ttl, length - 1, generation / 3)
turtle.clearscreen()
screen.reset()
screen.screensize(X, Y)
ttl = turtle.Turtle()
ttl.speed(10)
ttl.penup()
ttl.setposition(-X/2 + 10, -Y/2 + 50)
ttl.pendown()
sides = 3
gens = 3
length = 300
angle = ((sides - 2) * 180) / sides
for i in range(sides):
drawKoch(ttl, length, gens)
ttl.left(180-angle)
我不确定为什么它不能画出koch曲线。我不久前才开始学习这门语言。我需要一些助手.........希望你们知道这个可以帮助我
答案 0 :(得分:1)
一堆问题:
您正在length - 1, generation / 3
进行递归,应该是length / 3, generation - 1
因为这个,generation
应该是3,2,1,0(停止)而不是3,1.0,0.333,0.111,0.037,0.01234,0.00411,0.00137,...它永远不会等于#34; 0,所以你的函数只是不断递归
您在generation
length
而不是ttl.fd()
ttl.lt(120)
应为ttl.rt(120)