Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.