Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Rekursion Richard Göbel.

Ähnliche Präsentationen


Präsentation zum Thema: "Rekursion Richard Göbel."—  Präsentation transkript:

1 Rekursion Richard Göbel

2 Hilfestellung zur Konstruktion neuer Algorithmen Idee:
Rekursion Hilfestellung zur Konstruktion neuer Algorithmen Idee: Aufgabe zerlegen Kleinere Aufgaben lösen Gesamtlösung aus Teillösungen zusammensetzen Rekursive Algorithmen sind teuer: Speicherplatzverbrauch Laufzeit

3 Welche Verfahren müssen entwickelt werden?
Verfahren zur Zerlegung einer Aufgabestellung A in kleinere Aufgabenstellungen B1, B2, . . ., Bn Verfahren zur Konstruktion der Gesamtlösung für A aus den Lösungen für B1, B2, . . ., Bn Verfahren zur Lösung einer „kleinen“ Aufgabenstellung, die nicht weiter zerlegt werden kann

4 Aufbau eines rekursiven Algorithmus F
F(A) A zerlegbar A nicht zerlegbar Zerlegen: A B1, B2, Bn Löse A direkt Rekursion: F(B1) F(B2) F(Bn) Konstruieren: F(B1) F(B2) F(Bn)F(A)

5 Beispiel 1 – Summe der Zahlen von 1 bis n
Funktion sum : int  int Ansatz Zerlegen: n  n-1 Nicht zerlegbar: n = 1 Verfahren sum(1) = 1 sum(n) = sum(n-1) + n für n > 1

6 Programmcode . . . static int sum(int n) { if (n == 1) return 1; }
else return n + sum(n-1);

7 Funktionsaufrufe benötigen relativ viel Zeit!
Kosten Jeder Funktionsaufruf benötigt mindestens den folgenden Speicherplatz auf dem Stack: Rücksprungadresse Aufrufparameter Der Speicherplatzaufwand steigt linear mit dem Betrag des übergebenen Parameters! Funktionsaufrufe benötigen relativ viel Zeit!

8 Weitere Aufgabe Fakultät: n! Inhalt eines Array umdrehen Sortieren der Zahlen in einem Array

9 Rekursion für Baumstrukturen
Rekursive Algorithmen sind ideal für Baumstrukturen Beginne mit dem Wurzelknoten Wende das Verfahren rekursiv auf alle Kinderknoten an Beispiele Zähle die Knoten in einem Baum Ausgabe der Knoten eines Baums in einer vorgegebenen Ordnung (PreOrder, InOrder, PostOrder) Finde einen Knoten in einem Baum

10 Aufwand analysieren g f n0
Die O-Notation gibt eine qualitative Abschätzung für den Verlauf einer Funktion (hier Zeit- oder Speicheraufwand) Für eine Funktion f wird der qualitative Aufwand mit einer einfacheren Funktion g angegeben:  c, n0 :  n : n  n0  | f(n) |  | c g(n) | f g n0


Herunterladen ppt "Rekursion Richard Göbel."

Ähnliche Präsentationen


Google-Anzeigen