Dreistein

 


* Startseite     * Über...     * Archiv     * Gästebuch     * Kontakt



* Themen
     Willkommen
     Allgemeines
     * Variablen
     * Function
     * Procedure
     * String
     * Array
     FormObjekte
     * Button
     * CheckBox
     * Editfeld
     * Label
     * Listbox
     * RadioButton
     * Timer
     * Turtle
     Sortieralgorithmen
     * Arraysort
     * Bubblesort
     * Selection Sort
     * Quicksort
     Schleifen
     * repeat-Schleife
     * while-Schleife
     * for-Schleife
     Rekursion
     * Ackermann
     * Binominalkoeffizent
     * Fibonacci Zahlen
     * Fakultät
     * GGT
     * Kochfunktion
     * Sierpinskifunktion
     Nützliches
     * Hintergrundbild
     * Massenanzeige
     * Massenbenutzung
     * Schreibtischtest






Rekursion

Einführung

Bei einer rekursiven Funktion, wie man sie in den Beispielen, wie Koch und Sierpinski findet, wird die Funktion durch sich selbst immer wieder aufgerufen.

Rekursion wird immer dann eingesetzt, wenn ein gro?es Problem in mehrere kleine Probleme, die genau wie das gro?e aussehen, aufgeteilt werden kann. Mehr dazu siehe unten unter "Dummes Beispiel"


Zum Aufbau einer rekursiven Fuktion


  • Die Funktion wird wie alle Funktionen bzw. Prozeduren definiert, hat jedoch in den Klammern mindestens eine Variable.
    Beispiel:
    procedure name(a: Integer);

    a muss nicht unbedingt "a" hei?en und nicht immer ein Integer sein, aber bei unseren Beispielen ist es der Fall. Die Variablen, die schon in der Klammer definiert wurden, d?rfen in der Funktion nicht nochmals definiert werden.


  • Ganz wichtig ist, dass die rekursive Funktion eine Abbruchbedingung (dies ist eine if Abfrage) hat, weil die Funktion sich ansonsten immer wieder unkontrolliert aufrufen w?rde.
    Beispiel:
    if(a > 5) then
    name(a/3)
    else Anweisung;




  • Falls es noch nicht bekannt ist. Wenn sich eine rekursive Funktion selbst aufruf, wird eine neue Kopie dieser Funktion erstellt und die alte Funktion wartet bis die Kopie beendet ist.
    Die Funktion f?hrt sich also nicht selbst aus, sondern nur eine Kopie von sich.


  • Dummes Beispiel
    Man hat einen Karton in dem wiederum kleine Kartons sind.

    Die Funktion "auspacken" w?rde lauten:
  • Karton ?ffnen.

  • Wenn in dem Karton noch ein Kartons ist, dann gib den Karton an jemand anders mit dem Befehl auspacken.

  • Wenn Ware in dem Karton ist, dann bring sie ins Lager.



  • Das Beispiel gibt es als Gif-Animation

    Man sieht, dass die Funktion eine Abbruchbedingung hat. Im Gegensatz zum wirklichen Leben w?rde man bei diesem Beispiel den Karton an jemanden weitergeben und m?sste dann warten, bis dieser Seine T?tigkeit (Funktion) ausgef?hrt hat.

    Ich hoffe das ist erstmal verst?ndlich, sonst einfach im G?stebuch fragen!!!

    11.11.05 13:29





    Verantwortlich für die Inhalte ist der Autor. Dein kostenloses Blog bei myblog.de! Datenschutzerklärung
    Werbung