drawiter2
endlessly loops for two reasons:
- The whole thing is in a
while True
loop that never terminates. - The function calls itself with its parameters unchanged when you do
drawiter2(segment)
.
Change your function definition to:
def drawiter2(segment):
if segment <= 5:
return
else:
up()
fd(segment/2)
right(90)
down()
fd(segment/2)
right(90)
fd(segment)
right(90)
fd(segment)
right(90)
fd(segment)
right(90)
fd(segment/2)
left(90)
up()
fd(-segment/2)
drawiter2(segment-segment*.3)
Or, the iterative form:
def drawiter2(segment):
while True:
if segment <= 5:
break
else:
up()
fd(segment/2)
right(90)
down()
fd(segment/2)
right(90)
fd(segment)
right(90)
fd(segment)
right(90)
fd(segment)
right(90)
fd(segment/2)
left(90)
up()
fd(-segment/2)
segment -= segment * .3