Aller au contenu principal

Récursivité

Propositions de correction du TD VII.

Arbre​

def arbre(L, n, a, b):
down()
forward(L)
if n>1:
left(a)
arbre(L*b, n-1, a, b)
right(2*a)
arbre(L*b, n-1, a, b)
left(a)
up()
speed("fastest")
back(L)

Flocon de Koch​

def flocon(L, n):
if n==0:
forward(L)
else:
flocon(L//3, n-1)
left(60)
flocon(L//3, n-1)
right(120)
flocon(L//3, n-1)
left(60)
flocon(L//3, n-1)
speed("fastest")

Triangle de Sierpinski​

def triangle(n, L):
if n==0:
for i in range(0, 3):
forward(L)
left(120)
if n>0:
triangle(n-1, L/2)
forward(L/2)
triangle(n-1, L/2)
backward(L/2)
left(60)
forward(L/2)
right(60)
triangle(n-1, L/2)
left(60)
backward(L/2)
right(60)
speed("fastest")

Drive​

def demi_hexa(L, n):
left(60)
if n==0:
forward(L/2)
else:
left(60)
demi_hexa(L, n-1)
right(60)
demi_hexa(L, n-1)
right(60)
demi_hexa(L, n-1)
demi_hexa(L, n-1)

def logo_drive(L, n):
down()
demi_hexa(L, n)
speed("fastest")