Rekursion ist ein Lösungsverfahren, bei dem ein Problem auf das gleichartige, aber etwas vereinfachte Problem zurückgeführt wird. Eine Funktion ist dann rekursiv, wenn sie sich selbst aufruft. Damit sich eine rekursive Funktion nicht endlos aufruft, braucht sie eine Abbruchbedingung ("Verankerung"). Die Turtlegrafik eignet sich hervorragend für die Programmierung von Rekursionen. Es entstehen dabei sehr schöne Bilder. Beispiel 1: Das Prinzip einer Rekursion kann anschaulich am Beispiel Zeichnen einer Treppe erklärt werden: Bei der rekursiven Lösung wird eine Treppe mit 6 Stufen aus einer Stufe und einer Treppe mit 5 Stufen zusammengesetzt, ein Treppe mit 5 Stufen kann auf eine Stufe und einer Treppe mit 4 Stufen zurückgeführt werden (usw). In der Funktion staircase(n) wird jeweils dieselbe Funktion staircase(n - 1) aufgerufen, wobei der Parameter bei jedem neuen Aufruf um 1 kleiner wird. Wenn die Abbruchbedingung n = 0 erfüllt ist, bricht das Programm ab.
|
![]() Ausführen mit Webstart
|
# Tu10.py from gturtle import * def step(): forward(20) right(90) forward(20) left(90) def staircase(n): if n == 0: return step() staircase(n-1) makeTurtle() staircase(6) |
Programmcode markieren
|
Beispiel 2: Der binäre Baum
|
![]() Ausführen mit Webstart
|
Es ist wichtig, dass die Turtle nach dem Zeichnen des Baums an ihren Ursprünglich Position und Blickrichtung zurückkehrt.
Beispiel 3: Wabenmuster
|
|
Beispiel 4: Quadratmuster
|
![]() Ausführen mit Webstart
|
Beispiel 5: Koch-Kurve
|
![]() Ausführen mit Webstart
|
Beispiel 6: Peano
|
![]() Ausführen mit Webstart
|
Beispiel 7: TreeFractal
|
![]() Ausführen mit Webstart
|
Beispiel 8: FlowerFractal
|
![]() Ausführen mit Webstart
|
Beispiel 9: Sierpinsi Fraktal
|
![]() Ausführen mit Webstart |
![]() |
Aufgaben Serie 10 |
1) |
Erstelle die folgende Zeichnung mit Hilfe einer Rekursion. |
|
![]() |
2) |
Erstelle die folgende Zeichnung mit Hilfe einer Rekursion. |
|
![]() |
3) |
Ergänze den Programmcode so, dass eine Flocke gezeichnet wird. def figure(s):
|
![]() |
4) |
Ergänze die Kochkurve so, dass eine ganze Schneeflocke entsteht.
|
![]() |
5) |
Die interessante Klothoide kann mit folgender rekursiven Funktion erstellt werden: def clothoid(s): if s > 1500: Ergänze den Programmcode und teste die Rekursion für verschiedene Parameter s.
|
![]() |