Home

DELPHI - Rekursion

Nun soll endlich eine neue Programmierstruktur gelernt werden. Das Thema heißt Rekursionen.

  1. Betrachten wir zuerst schöne Bilder: Fraktale aus der Mathematik-Gallery.
    Solche Bilder werden rekursiv gezeichnet, das heißt, man hat eine Struktur (z. B. ein Dreieck) und führt daran eine einfache Konstruktion durch (z. B. in vier Dreiecke aufteilen, eine davon schwärzen), dann wird auf die so entstandene Substruktur dieselbe Konstruktion angewendet, ...
  2. Betrachten wir ein Beispiel aus der Mathematik, z. B. die Definition der Fakultät.
    Es gibt zwei Möglichkeiten:
    a) iterativ: n! = 1 * 2 * 3 * 4 * ... (n-1) * n
    b) rekursiv: n! = (n-1)! * n und der Anfangsbedingung 1! = 1
  3. Nun lassen sich solche rekursiven Strukturen sehr elegant programmieren:
    Betrachte dazu folgendes Beispielprogramm Fak (Exe-Datei und Quelltext). Wir machen uns zuerst mit der Denkweise der rekursiven Programmierung vertraut: Wir rufen in einer Prozedur oder Funktion diese selbst auf.
  4. Versuche Dich an folgender Programmierung der mathematischer Rekursion: n2=(n-1)2+2n-1.
  5. Eine weitere Rekursion lässt sich bei folgendem Problem anwenden:
    a) Ein beliebiges Wort beliebiger Länge soll rückwärts ausgegeben werden, z. B. wort -> trow (Dazu muss man sich mit Stringroutinen vertraut machen.)
    b) Eine Zeichenfolge soll als Palindrom (z.B. "anna") erkannt werden.
  6. Der Nutzen der Rekursion lässt sich aber beim Zeichnen erkennen. Mach' dich zuerst mit den Zeichenroutinen von Delphi vertraut, entweder mit der Hilfe oder mit dem Quelltext von Zeichnen.
    (Wichtige Befehle zum Zeichnen auf einer Leinwand (=Canvas) findest du hier.)
  7. Anschließend soll in einen Kreis (beliebiger Radius) jeweils ein um dr=1 kleinerer Kreis rekursiv gezeichnet werden (Abbruchbedingung nicht vergessen).
  8. Dann geht's an das Programmieren von Fraktalen. Versuch' dich zuerst am Sierpinski-Dreieck und seinen Verwandten. Ein Beispielprogramm kannst Du hier (ZIP, 110 kB) downloaden.
  9. Wenn gar nichts mehr hilft: Quelltext dazu
  10. Ein weiteres Beispiel: Kochkurve (ZIP, 165 kB) mit Quelltext dazu
  11. Aus einem anderen Bereich kommt folgendes Beispiel: Das Programm Datei-Manager (ZIP, 200 kB) kann Dateien anzeigen und zählen, wobei rekursiv die Unterverzeichnisse durchforstet werden (es erstellt außerdem eine zugehörige HTML-Seite)