Ricorsione da 1 a 11

Ricorsione=12

Ricorsione=13

Ricorsione=14

Codice
import turtle # ... import math # sqrt() import time # sleep() #------------------------------------------------ def set_all(): global POSIZIONE, DISTANZA, DISTANZE, RIC_MAX, POS_X, POS_Y, sqrt2 WIDTH = 800 # larghezza finestra HEIGHT = 500 # altezza finestra RIC_MAX = 14 # massima ricorsione POS_X = -WIDTH*0.2 # posizione iniziale POS_Y = -HEIGHT*0.25 DISTANZA = WIDTH*0.4 # dimensione iniziale della curva DISTANZE = [0]*(RIC_MAX+1) # dimensioni successive sqrt2 = math.sqrt(2) turtle.setup(width=WIDTH, height=HEIGHT) turtle.hideturtle() turtle.pencolor("red")
turtle.pensize(2) turtle.bgcolor("pink") turtle.tracer(0) #------------------------------------------------ def start_draw(r): DISTANZE[r] = DISTANZA for i in range(r-1,0,-1): DISTANZE[i]=DISTANZE[i+1]/sqrt2 turtle.penup() turtle.setposition(POS_X, POS_Y) turtle.setheading(0) turtle.pendown() turtle.clear() turtle.title("Livello="+str(r)) def end_draw(): turtle.update() time.sleep(2) #------------------------------------------------ def levy(n): if(n == 1): turtle.forward(DISTANZE[n]) else: turtle.left(45) levy(n-1); turtle.right(90) levy(n-1); turtle.left(45) #------------------------------------------------ MAIN set_all() for r in range(1,RIC_MAX+1): start_draw(r) levy(r) end_draw() turtle.done()
Osserva
- disegna le figure successive con pause di 2 secondi
- le distanze da percorrere sono calcolate in anticipo