Seite 1 von 1

Rekursion: Erklärung Koch Kurve

Verfasst: Dienstag 1. September 2015, 21:45
von netbus
Hallo,
ich bin ein absoluter Python Neuling und gehe gerade das Buch "Think Pyhton" durch.
Dort wird das Beispiel gebracht, die Koch Kurve.
Ich habe ein Problem mit dem Verständnis der Rekursion.

Code: Alles auswählen

def koch(t, n):
    """Zeichnet eine Koch-Kurve mit Länge n."""
    if n<3:
        fd(t, n)
        return
    m = n/3.0
    koch(t, m)
    lt(t, 60)
    koch(t, m)
    rt(t, 120)
    koch(t, m)
    lt(t, 60)
    koch(t, m)
Verwende ich als länge (n) den Wert 5 wird er nach dem ersten if durch 5 dividiert, koch wird mit dem Ergebnis neu aufgerufen und ist nun kleiner als 3. Trotzdem läuft die Funktion weiter.
Wie kann das sein? Und meine zweite Frage ist, wenn (n<3) die Funktion nicht stoppt, was bring diese Funktion dann zum Stoppen?

Re: Rekursion: Erklärung Koch Kurve

Verfasst: Dienstag 1. September 2015, 22:30
von BlackJack
@netbus: Welchen Funktionsaufruf meinst Du denn? Der erste läuft natürlich bis zum Ende durch und ruft `koch()` vier mal auf. Diese vier Aufrufe kommen nur bis zum ``if``-Zweig, aber der erste Aufruf ist erst zuende wenn der Programmfluss am Ende der Funktion angekommen ist. Ein ``return`` beendet nur den aktuellen Funktionsaufruf, nicht aber den Aufrufer. Zu dem wird zurückgekehrt und zwar an den Punkt im Programmablauf direkt nach dem Aufruf.

Re: Rekursion: Erklärung Koch Kurve

Verfasst: Mittwoch 2. September 2015, 10:26
von Kebap
Rekursion bedeutet, dass die Funktion sich selbst nochmal aufruft.

Die zweite aufgerufene Funktion läuft in n<3 wie du richtig anmerkst.

Sie wird dann beendet und die zuerst aufgerufene Funktion läuft weiter.

Re: Rekursion: Erklärung Koch Kurve

Verfasst: Mittwoch 2. September 2015, 17:29
von netbus
Danke BlackJack.
Ich glaube ich habe es jetzt verstanden.