Met Python turtle kunnen ook tekeningen maken die een recursief algoritme bevatten. Hiermee kunnen we een zeer beperkt aantal regels code zeer uitgebreide figuren tekenen. Die er vaak zeer complex uit zien.
Hieronder bijvoorbeeld een Siepinsky driehoek
Deze gaan we stap voor stap tekenen.
We beginnen met onstaand figuur
In middels weten we het algoritme om een driehoek te tekenen
for i in range(3): t.forward(zijde) t.left(120)
Uiteraand kunnen we hier ook een deeltaak van maken
def driehoek(zijde): for i in range(3): t.forward(zijde) t.left(120)
Deze deeltaak willen we steeds herhalen nadat we een driehoek hebben getekend. Alleen bij de volgende driehoek moet de zijde gehalveerd worden.
def driehoek(zijde): for i in range(3): t.forward(zijde) t.left(120) driehoek(zijde/2)
Je ziet hier dat in de deeltaak driehoek de deeltaak zichzelf gaat aanroepen. Dit blijft oneindig lang doorgaan want nergens staat dat dit moet stoppen met tekenen.
Een manier om aan te geven dat er gestopt moet worden met tekenen is bevoorbeeld een voorwaarde toevoegen. Bijvoorbeeld teken alleen als de zijde > 5
def driehoek(zijde): if zijde > 5: for i in range(3): t.forward(zijde) t.left(120) driehoek(zijde/2)
Zodra de zijde 5 of kleiner wordt zal het algoritme stoppen.
Onze volledige code wordt dan
import turtle t = turtle.Turtle() t.speed(0) def driehoek(zijde): if zijde > 5: for i in range(3): t.forward(zijde) t.left(120) driehoek(zijde/2) driehoek(200)
Bij de Sierpinsky driehoek wordt vanuit elke hoek een driehoek getekend. Op dit moment doen we dat nog alleen vanuit de linker onderhoek. Dus bij elke aanroep van de deeltaak moet de deeltaak zelf drie keer aangeroepen gaan worden. Hiervoor is een zeer kleine aanpassing in onze code nodig.