Rekursion
 Methode, die sich selbst aufruft
 Rekursion umfasst immer
 Abbruchbedingung(en) = Rekursionsanker
zum Beenden der Rekursion
 Rekursive(n) Aufruf(e)
 auch indirekte Rekursion möglich
 Rekursion meist ineffizienter als iterative Lösung,
aber manchmal klarer
 abhängig von Problemstellung
INFORMATIK
UNIVERSITÄT LINZ
<1>
Grundstruktur rekursiver Algorithmen
Rekursion(){
if (Abbruchbedingung){ –– Rekursionsanker
löse einfaches Problem;
gib Ergebnis zurück;
} else { –– rekursiver Aufruf
zerlege Problem in einfachere(s) Problem(e)
und rufe Rekursion() für diese(s)
kleinere(n)
Problem(e) auf;
vereinige einfachere Lösung(en);
}
}
INFORMATIK
UNIVERSITÄT LINZ
<2>
Beispiel: Prüfung auf Zerlegbarkeit
Gegeben ist ein Rohr der Gesamtlänge l. Gesucht ist eine Funktion, die
prüft, ob dieses Rohr so in beliebig viele Teilstücke der Längen l1, l2
und l3 zerlegt werden kann, dass nichts übrigbleibt.
Ist eine derartige Zerlegung möglich, soll als Funktionswert true, sonst
false zurückgegeben werden.
INFORMATIK
UNIVERSITÄT LINZ
<3>
Binärer Suchbaum
 Ein Binärbaum ist entweder leer oder er besteht
aus einem Knoten dem ein Element und zwei
binäre Bäume zugeordnet sind (rekursive
Definition).
 Bei einem Binären Suchbaum sind die Elemente
sortiert: Alle Elemente im linken Teilbaum eines
Knoten sind kleiner als das Knotenelement, alle
Elemente im rechten Teilbaum sind größer (oder
gleich) als das Knotenelement.
INFORMATIK
UNIVERSITÄT LINZ
<4>
Traversierung
 Pre Order (Wurzel, links, rechts)
 In Order (links, Wurzel, rechts)
 Post Order (links, rechts, Wurzel)
Linz
Graz
Enns
INFORMATIK
UNIVERSITÄT LINZ
<5>
Wels
Lienz
Überlegungen zur Implementierung
Operationen auf Bäume
 Anlegen eines Baumes
 Einfügen von Knoten
 Suchen von Knoten
 Traversierung
 (Löschen von Knoten)
INFORMATIK
UNIVERSITÄT LINZ
<6>
Aufteilung Funktionalität
 Baum
 hat Verweis auf
Wurzelknoten
 Einfügen, Suchen von
Knoten
 Traversierung
 Löschen von Knoten
 Knoten
 hat Verweis auf linken
und rechten Teilbaum
 kennt Inhalt (Element)
Herunterladen

Methode, die sich selbst aufruft Rekursion umfasst immer