EINFÜHRUNG |
Aus deiner frühen Kindheit kennst du möglicherweise die etwas unheimliche Geschichte vom Mann mit dem hohlen Zahn:
|
|
REKURSIVER TREPPENBAU |
Du wirst gleich die Turtle damit beauftragen, mit step() einen Treppenblock zu zeichnen, um dann mit dem Aufruf stairs(3) eine 3 stufige Treppe zu bauen. Aber warte noch, es fehlt doch die Angabe, dass beim Bau einer Treppe aus 0 Stufen gar nichts geschehen soll. Dies kannst du aber leicht mit einer if-Bedingung einbauen: if n == 0: return Die Anweisung return besagt, dass sie aufhören und zur vorherigen Arbeit zurückkehren kann. Dein Programm sieht nun so aus: from gturtle import * def stairs(n): if n == 0: return step() stairs(n - 1) def step(): forward(50) right(90) forward(50) left(90) makeTurtle() fillToHorizontal(0) stairs(3) Programmcode markieren
|
MEMO |
Unter Rekursionen versteht man ein fundamentales Lösungsverfahren in der Mathematik und Informatik, bei dem ein Problem derart gelöst wird, dass man es auf das gleiche, aber etwas vereinfachte Problem zurückführt. Wenn also f ein Funktion ist, die das Problem löst, so wird bei einer (direkten) Rekursion in der Definition von f wieder f verwendet [mehr... Bei der indirektion Rekursion werden in der Definition von f statt f selbst andere Funktionen verwendet, die f enthalten]. Auf den ersten Blick scheint es seltsam, dass man ein Problem derart lösen will, dass man die Lösung bereits voraussetzt. Dabei übersieht man aber einen wesentlichen Punkt: Es wird nicht genau dasselbe Problem zur Lösung verwendet, sondern eines, das der Lösung näher liegt. Dazu verwendet man einen meist ganzzahligen Ordnungsparameter n, den man f übergibt. def f(n):
...
def f(n):
...
f(n-1)
...
def f(n): if n == 0: return ... f(n - 1) ... |
DER PYTHAGORASBAUM |
Es ist bekannt, dass die Umsetzung in ein rekursives Programm ungewohnt ist. Darum erhältst du hier eine ausführliche Anleitung, wie du vorgehen musst.
from gturtle import * import math def tree(s): if s < 2: return square(s) forward(s) s1 = s / math.sqrt(2) left(45) tree(s1) right(90) forward(s1) tree(s1) back(s1) left(45) back(s) def square(s): repeat 4: forward(s) right(90) makeTurtle() ht() setPos(-50, -200) tree(100) Programmcode markieren
|
MEMO |
Bei vielen rekursiv definierten Figuren ist es wichtig, dass die Turtle wieder an ihren Anfangsort mit der Anfangsblickrichtung zurückkehrt. |
AUFGABEN |
|