Ein Unterprogramm kann sich selber aufrufen. Das ergibt im Normalfall eine unendliche Wiederholung, so dass das Programm abstürzt. Wird das Unterprogramm jedoch jedesmal mit einem veränderten Parameter aufgerufen, so kann eine Abbruchbedingung erstellt werden, welche angibt, ob das Unterprogramm erneut aufgerufen werden soll oder nicht.
Beispiel
Im folgenden Programm wird ein einfacher binärer Baum gezeichnet:
from turtle import *
left(90)
def baum(grösse):
forward(grösse)
left(45)
forward(grösse / 2)
backward(grösse / 2)
right(90)
forward(grösse / 2)
backward(grösse / 2)
left(45)
baum(40)
Diesen Baum können wir nun so umbauen, dass jeder Ast auch wieder ein binärer Baum ist:
from turtle import *
left(90)
def baum(grösse):
if grösse < 5:
forward(grösse)
else:
forward(grösse)
left(45)
baum(grösse / 2)
backward(grösse / 2)
right(90)
baum(grösse / 2)
backward(grösse / 2)
left(45)
baum(100)
Bemerken Sie, dass eine Abbruchbedingung eingefügt wurde - falls die grösse kleiner als 5 ist, wird nur eine Strecke gezeichnet, andernfalls ein ganzer Baum.
Koch Kurve
Eine Koch-Kurve ist wie folgt aufgebaut:
wobei ein einzelnes Element wie folgt aussieht:
from turtle import *
⭐️ Zusatz: Zeichnen Sie ein Sechseck bestehend aus 6 Koch-Kurven.
⭐️ Pythagorasbaum
Versuchen Sie, einen rekursiven Pythagoras-Baum zu zeichnen.
from turtle import *
Weitere Inspirationen für Fraktale 👉 https://natureofcode.com/book/chapter-8-fractals/
⭐ Rekursion