Zum Hauptinhalt springen
26P

⭐ Rekursion

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

Aufgabe

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.

Ein Pythagorasbaum
Ein Pythagorasbaum
Pythagorasbaum
pythagoras.py
from turtle import *

Weitere Inspirationen für Fraktale 👉 https://natureofcode.com/book/chapter-8-fractals/