Um grafische Rekursionsalgorithmen zu verdeutlichen wird die Klasse Turtle bereitgestellt.
Die Turtle ist hierbei ein Zeichengerät, mit dessen Hilfe es möglich ist, auf einer vordefinierten
Zeichenfläche Grafiken zu erstellen. Auf Grund des Umfanges der Methoden ist eine Nutzung für
Hilbert - oder Sierpinskikurven möglich. Die Klasse Turtle kann hier geladen werden.
[Klasse Turtle Spezifikation]
[Source]
Der Code für die Kochfunktion gestaltet sich wie folgt. 01 from turtle import * 02 03 class koch (turtle): 04 05 def __init__(self): 06 turtle.__init__(self, 500, 600, 100, 160, "Kochkurve") 07 08 def dreieck (self,stufe,laenge): 09 teillaenge = laenge /3.0 10 if stufe > 1: 11 self.dreieck (stufe -1, teillaenge) 12 self.drehe_links (60) 13 self.dreieck (stufe -1, teillaenge) 14 self.drehe_rechts (120) 15 self.dreieck (stufe -1, teillaenge) 16 self.drehe_links (60) 17 self.dreieck (stufe -1, teillaenge) 18 19 else : self.vor (laenge) 20 21 def schnee_flocke (self, x, stufe, laenge): 22 for i in range (x): 23 self.dreieck (stufe, laenge) 24 25 [ SOURCE ] 26 |
Beispiel für Iterationstiefe : 10 |
Der Code für den Binaerbaum gestaltet sich wie folgt. 01 from turtle import * 02 03 class binbaum (turtle): 04 05 def __init__(self): 06 turtle.__init__(self, 500, 400, 100, 160, "Binaerbaum") 07 08 def baum (self,stufe,laenge): 09 teillaenge = laenge /1.5 10 if stufe > 1: 11 self.vor (teillaenge) 12 self.drehe_links (45) 13 self.baum (stufe -1, teillaenge) 14 self.drehe_links (90) 15 self.baum (stufe -1, teillaenge) 16 self.drehe_links (45) 17 self.vor (teillaenge) 18 19 # Testumgebung 20 21 if __name__=="__main__": 22 23 test = binbaum () 24 test.kroeten_farbe("black") 25 test.gehe_zum_start (240,440) 26 test.drehe_links (90) 27 test.baum (10,200) 28 29 test.fenster.mainloop () |