Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011"

Transkript

1 Algorithmen und Datenstrukturen Tafelübung 4 Jens Wetzl 15. November 2011

2 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter: Hinweis zu Aufgabe 4.4: Rekursive Kunst Im CIP-Pool läuft der process checker, der Programme abschießt, die lange mit hoher CPU-Auslastung laufen Große rekursive Kunstwerke auf dem eigenen Rechner! 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 2 / 19

3 Was machen wir heute? Rekursion Theorie Beispiele Rekursionsarten Live-Programmierung: Türme von Hanoi Induktionsbeweise Backtracking Vorgehensweise Live-Programmierung: Monopoly Klausuraufgabe zu Rekursion 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 3 / 19

4 Rekursion Theorie Beispiele Rekursionsarten

5 Theorie Rekursiver Gedanke: Wir wollen ein Problem so in ein oder mehrere (kleinere) Teilprobleme zerlegen, dass 1. bei fortgesetzter Zerlegung die Teilprobleme irgendwann so klein sind, dass sie trivial gelöst werden können 2. aus den Lösungen der kleineren Teilprobleme leicht die Lösung des größeren Problems zusammengestellt werden kann Eine rekursive Methode sieht häufig so aus: static int recursive(int arg1, int arg2,...) { // Basisfall / Basisfaelle: if (arg1 == 0 arg2 == 0) return 1; // Teilprobleme durch Rekursion loesen: int a = recursive(arg1-1, arg2); int b = recursive(arg1, arg2-1); // Zusammensetzen der Loesung aus den Teilloesungen: return a * b; 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 5 / 19

6 Theorie Rekursiver Gedanke: Wir wollen ein Problem so in ein oder mehrere (kleinere) Teilprobleme zerlegen, dass 1. bei fortgesetzter Zerlegung die Teilprobleme irgendwann so klein sind, dass sie trivial gelöst werden können 2. aus den Lösungen der kleineren Teilprobleme leicht die Lösung des größeren Problems zusammengestellt werden kann Eine rekursive Methode sieht häufig so aus: static int recursive(int arg1, int arg2,...) { // Basisfall / Basisfaelle: if (arg1 == 0 arg2 == 0) return 1; // Teilprobleme durch Rekursion loesen: int a = recursive(arg1-1, arg2); int b = recursive(arg1, arg2-1); // Zusammensetzen der Loesung aus den Teilloesungen: return a * b; 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 5 / 19

7 Theorie Rekursiver Gedanke: Wir wollen ein Problem so in ein oder mehrere (kleinere) Teilprobleme zerlegen, dass 1. bei fortgesetzter Zerlegung die Teilprobleme irgendwann so klein sind, dass sie trivial gelöst werden können 2. aus den Lösungen der kleineren Teilprobleme leicht die Lösung des größeren Problems zusammengestellt werden kann Eine rekursive Methode sieht häufig so aus: static int recursive(int arg1, int arg2,...) { // Basisfall / Basisfaelle: if (arg1 == 0 arg2 == 0) return 1; // Teilprobleme durch Rekursion loesen: int a = recursive(arg1-1, arg2); int b = recursive(arg1, arg2-1); // Zusammensetzen der Loesung aus den Teilloesungen: return a * b; 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 5 / 19

8 Theorie Rekursiver Gedanke: Wir wollen ein Problem so in ein oder mehrere (kleinere) Teilprobleme zerlegen, dass 1. bei fortgesetzter Zerlegung die Teilprobleme irgendwann so klein sind, dass sie trivial gelöst werden können 2. aus den Lösungen der kleineren Teilprobleme leicht die Lösung des größeren Problems zusammengestellt werden kann Eine rekursive Methode sieht häufig so aus: static int recursive(int arg1, int arg2,...) { // Basisfall / Basisfaelle: if (arg1 == 0 arg2 == 0) return 1; // Teilprobleme durch Rekursion loesen: int a = recursive(arg1-1, arg2); int b = recursive(arg1, arg2-1); // Zusammensetzen der Loesung aus den Teilloesungen: return a * b; 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 5 / 19

9 Beispiele f (n) = n i=1 i, n > 0 g(n): Abstand der Zahl n von 5 fib(n) = fib(n 1) + fib(n 2): Was muss man hier im Gegensatz zu den Funktionen oben beachten? Pseudocode für Listenlänge: x0, xrest = split(x) spaltet x in 1. Element und Restliste auf, empty(x) prüft, ob Liste x leer ist Stammbaum: void drawfamilytree(person p) { write(p.getname()); if (p.haschildren()) { for (Person child: p.getchildren()) { drawfamilytree(child); drawlink(person, child); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 6 / 19

10 Beispiele f (n) = n i=1 i, n > 0 g(n): Abstand der Zahl n von 5 fib(n) = fib(n 1) + fib(n 2): Was muss man hier im Gegensatz zu den Funktionen oben beachten? Pseudocode für Listenlänge: x0, xrest = split(x) spaltet x in 1. Element und Restliste auf, empty(x) prüft, ob Liste x leer ist Stammbaum: void drawfamilytree(person p) { write(p.getname()); if (p.haschildren()) { for (Person child: p.getchildren()) { drawfamilytree(child); drawlink(person, child); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 6 / 19

11 Beispiele f (n) = n i=1 i, n > 0 g(n): Abstand der Zahl n von 5 fib(n) = fib(n 1) + fib(n 2): Was muss man hier im Gegensatz zu den Funktionen oben beachten? Pseudocode für Listenlänge: x0, xrest = split(x) spaltet x in 1. Element und Restliste auf, empty(x) prüft, ob Liste x leer ist Stammbaum: void drawfamilytree(person p) { write(p.getname()); if (p.haschildren()) { for (Person child: p.getchildren()) { drawfamilytree(child); drawlink(person, child); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 6 / 19

12 Beispiele f (n) = n i=1 i, n > 0 g(n): Abstand der Zahl n von 5 fib(n) = fib(n 1) + fib(n 2): Was muss man hier im Gegensatz zu den Funktionen oben beachten? Pseudocode für Listenlänge: x0, xrest = split(x) spaltet x in 1. Element und Restliste auf, empty(x) prüft, ob Liste x leer ist Stammbaum: void drawfamilytree(person p) { write(p.getname()); if (p.haschildren()) { for (Person child: p.getchildren()) { drawfamilytree(child); drawlink(person, child); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 6 / 19

13 Beispiele f (n) = n i=1 i, n > 0 g(n): Abstand der Zahl n von 5 fib(n) = fib(n 1) + fib(n 2): Was muss man hier im Gegensatz zu den Funktionen oben beachten? Pseudocode für Listenlänge: x0, xrest = split(x) spaltet x in 1. Element und Restliste auf, empty(x) prüft, ob Liste x leer ist Stammbaum: void drawfamilytree(person p) { write(p.getname()); if (p.haschildren()) { for (Person child: p.getchildren()) { drawfamilytree(child); drawlink(person, child); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 6 / 19

14 Rekursionsarten Lineare Rekursion Maximal ein rekursiver Aufruf pro Methodenaufruf (verschieden Aufrufe in verschiedenen Zweigen möglich) Endrekursion Rekursiver Funktionsaufruf ist letzte Aktion zur Berechnung der Methode (was ist der Vorteil? Beispiel?) Kaskadenartige Rekursion Zwei oder mehr rekursive Aufrufe pro Methodenaufruf (was heißt das für die Laufzeit? Beispiel?) Verschränkte Rekursion Zwei Funktionen f und g heißen verschränkt rekursiv, wenn f einen Aufruf von g und g einen von f enthält Verschachtelte Rekursion Z.B. Ackermann-Funktion: static int ackermann(int m, int n) { if (m == 0) return n + 1; if (n == 0) return ackermann(m - 1, 1); else return ackermann(m - 1, ackermann(m, n - 1)); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 7 / 19

15 Rekursionsarten Lineare Rekursion Maximal ein rekursiver Aufruf pro Methodenaufruf (verschieden Aufrufe in verschiedenen Zweigen möglich) Endrekursion Rekursiver Funktionsaufruf ist letzte Aktion zur Berechnung der Methode (was ist der Vorteil? Beispiel?) Kaskadenartige Rekursion Zwei oder mehr rekursive Aufrufe pro Methodenaufruf (was heißt das für die Laufzeit? Beispiel?) Verschränkte Rekursion Zwei Funktionen f und g heißen verschränkt rekursiv, wenn f einen Aufruf von g und g einen von f enthält Verschachtelte Rekursion Z.B. Ackermann-Funktion: static int ackermann(int m, int n) { if (m == 0) return n + 1; if (n == 0) return ackermann(m - 1, 1); else return ackermann(m - 1, ackermann(m, n - 1)); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 7 / 19

16 Rekursionsarten Lineare Rekursion Maximal ein rekursiver Aufruf pro Methodenaufruf (verschieden Aufrufe in verschiedenen Zweigen möglich) Endrekursion Rekursiver Funktionsaufruf ist letzte Aktion zur Berechnung der Methode (was ist der Vorteil? Beispiel?) Kaskadenartige Rekursion Zwei oder mehr rekursive Aufrufe pro Methodenaufruf (was heißt das für die Laufzeit? Beispiel?) Verschränkte Rekursion Zwei Funktionen f und g heißen verschränkt rekursiv, wenn f einen Aufruf von g und g einen von f enthält Verschachtelte Rekursion Z.B. Ackermann-Funktion: static int ackermann(int m, int n) { if (m == 0) return n + 1; if (n == 0) return ackermann(m - 1, 1); else return ackermann(m - 1, ackermann(m, n - 1)); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 7 / 19

17 Rekursionsarten Lineare Rekursion Maximal ein rekursiver Aufruf pro Methodenaufruf (verschieden Aufrufe in verschiedenen Zweigen möglich) Endrekursion Rekursiver Funktionsaufruf ist letzte Aktion zur Berechnung der Methode (was ist der Vorteil? Beispiel?) Kaskadenartige Rekursion Zwei oder mehr rekursive Aufrufe pro Methodenaufruf (was heißt das für die Laufzeit? Beispiel?) Verschränkte Rekursion Zwei Funktionen f und g heißen verschränkt rekursiv, wenn f einen Aufruf von g und g einen von f enthält Verschachtelte Rekursion Z.B. Ackermann-Funktion: static int ackermann(int m, int n) { if (m == 0) return n + 1; if (n == 0) return ackermann(m - 1, 1); else return ackermann(m - 1, ackermann(m, n - 1)); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 7 / 19

18 Rekursionsarten Lineare Rekursion Maximal ein rekursiver Aufruf pro Methodenaufruf (verschieden Aufrufe in verschiedenen Zweigen möglich) Endrekursion Rekursiver Funktionsaufruf ist letzte Aktion zur Berechnung der Methode (was ist der Vorteil? Beispiel?) Kaskadenartige Rekursion Zwei oder mehr rekursive Aufrufe pro Methodenaufruf (was heißt das für die Laufzeit? Beispiel?) Verschränkte Rekursion Zwei Funktionen f und g heißen verschränkt rekursiv, wenn f einen Aufruf von g und g einen von f enthält Verschachtelte Rekursion Z.B. Ackermann-Funktion: static int ackermann(int m, int n) { if (m == 0) return n + 1; if (n == 0) return ackermann(m - 1, 1); else return ackermann(m - 1, ackermann(m, n - 1)); 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 7 / 19

19 Live-Programmierung: Türme von Hanoi

20 Türme von Hanoi Quelle: November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 9 / 19

21 Induktionsbeweise

22 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

23 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

24 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

25 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

26 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

27 Induktionsbeweise Beweismethode, um zum Beispiel die Korrektheit einer rekursiven Formulierung zu zeigen Kann auch in der Klausur drankommen! Einfaches Beispiel: zu zeigen ist n k=1 c = n c Induktionsanfang: Für n = 1 ist 1 k=1 c = c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 1 gilt für n = 1: 2 k=1 c = c + 1 k=1 c = c + 1 c = 2 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 2 gilt für n = 3: 3 k=1 c = c + 2 k=1 c = c + 2 c = 3 c = n c Induktionsschritt: Unter Verwendung der Korrektheit der Formel für n = 3 gilt für n = 4: 4 k=1 c = c + 3 k=1 c = c + 3 c = 4 c = n c Induktionsschritt allgemein: n n + 1 n+1 k=1 c = c + n k=1 c IV = c + n c = (n + 1) c 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 11 / 19

28 Gauß sche Summenformel Zu zeigen: n k = k=1 n (n + 1) November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 12 / 19

29 Gauß sche Summenformel Zu zeigen: n k = k=1 n (n + 1) 2 Induktionsanfang: n = 1: = 1 = k k=1 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 12 / 19

30 Gauß sche Summenformel Zu zeigen: n k = k=1 n (n + 1) 2 Induktionsanfang: n = 1: = 1 = k k=1 Induktionsschritt: n n + 1 n+1 k = k=1 = = n k + (n + 1) IV = k=1 n (n + 1) 2 (n + 1) (n + 2) 2 n (n + 1) + (n + 1) 2 2 (n + 1) + = 2 n (n + 1) + 2 (n + 1) November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 12 / 19

31 Backtracking Vorgehensweise Live-Programmierung: Monopoly

32 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 14 / 19

33 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 14 / 19

34 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 14 / 19

35 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! 15. November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 14 / 19

36 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

37 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

38 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

39 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

40 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! ? November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

41 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

42 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

43 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

44 Backtracking: Vorgehensweise Am Beispiel Sudoku: Per Rekursion wird jede Zelle des Sudoku (mehrfach!) besucht, es werden alle möglichen Zahlen für die Zelle bestimmt Die erste mögliche Zahl wird in das Feld geschrieben, dann wird rekursiv nach Lösungen dieses neuen Sudoku gesucht Wird für die erste mögliche Zahl keine Lösung gefunden, wird nacheinander die zweite, dritte, usw. mögliche Zahl eingesetzt und jedes mal rekursiv nach Lösungen gesucht Wichtig: Wird für keine der möglichen Zahlen eine Lösung gefunden, wird das Feld wieder auf leer zurückgesetzt! November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 14 / 19

45 Live-Programmierung: Monopoly Quelle: November 2011 Jens Wetzl Tafelübung Algorithmen und Datenstrukturen 15 / 19

46 Klausuraufgabe zu Rekursion

47 Klausur 02/2009: Aufgabe 5 Zum deterministischen Testen von Anwendungen lassen sich Pseudo- Zufallszahlen verwenden. Folgende Berechnungsformel erzeugt für n 0 solche Zahlen: f (n) = n + 1 n < (((f (n 1) f (n 2)) f (n 3)) mod 100) sonst Hinweis: Der Modulo-Operator a mod b ergibt den Rest bei ganzzahliger Division und kann in Java durch % ausgedrückt werden. 1. Implementieren Sie die Funktion f rekursiv in Java. public static int f(int n) { 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 17 / 19

48 Klausur 02/2009: Aufgabe 5 Zum deterministischen Testen von Anwendungen lassen sich Pseudo- Zufallszahlen verwenden. Folgende Berechnungsformel erzeugt für n 0 solche Zahlen: f (n) = n + 1 n < (((f (n 1) f (n 2)) f (n 3)) mod 100) sonst Hinweis: Der Modulo-Operator a mod b ergibt den Rest bei ganzzahliger Division und kann in Java durch % ausgedrückt werden. 2. Implementieren Sie die Funktion f nun linear-rekursiv mit Durchreichen von Zwischenergebnissen. Gegeben ist die zugehörige Initialisierungsmethode, die Ihre Methode aufruft. public static int f(int n) { return lin(1, 2, 3, n); public static int lin(int a, int b, int c, int steps) { 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 18 / 19

49 Klausur 02/2009: Aufgabe 5 Zum deterministischen Testen von Anwendungen lassen sich Pseudo- Zufallszahlen verwenden. Folgende Berechnungsformel erzeugt für n 0 solche Zahlen: f (n) = n + 1 n < (((f (n 1) f (n 2)) f (n 3)) mod 100) sonst Hinweis: Der Modulo-Operator a mod b ergibt den Rest bei ganzzahliger Division und kann in Java durch % ausgedrückt werden. 3. Implementieren Sie eine iterative Java-Variante der Funktion f. public static int f(int n) { 15. November 2011 Jens Wetzl (jens.wetzl@cs.fau.de) Tafelübung Algorithmen und Datenstrukturen 19 / 19

Algorithmen und Datenstrukturen 04

Algorithmen und Datenstrukturen 04 15. November 2011 1 Besprechung Blatt 3 Hinweise 2 Induktion Allgemeines Beispiele 3 Rekursion Allgemeines Lineare Rekursion und Endrekursion Entrekursivierung Weitere Rekursionstypen 4 Backtracking 5

Mehr

Algorithmen und Datenstrukturen 04

Algorithmen und Datenstrukturen 04 (17. Mai 2012) 1 Besprechung Blatt 3 Hinweise 2 Induktion Allgemeines Beispiele 3 Rekursion Lineare Rekursion und Endrekursion Entrekursivierung Weitere Rekursionstypen 4 O-Kalkül Allgemein Wichtige Formeln

Mehr

II.3.1 Rekursive Algorithmen - 1 -

II.3.1 Rekursive Algorithmen - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -

Mehr

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

Objektorientierte Programmierung (ZQ1u2B)

Objektorientierte Programmierung (ZQ1u2B) Objektorientierte Programmierung (ZQ1u2B) Woche 4 Rekursion Christopher Scho lzel Technische Hochschule Mittelhessen 4. November 2015 Inhalt Rekursion Lineare Rekursion Verzweigte Rekursion Verschränkte

Mehr

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt Inhalt 1. Einführung 1. Beispiel: Fakultät 2. Beispiel: Zahlenfolge 3. Beispiel: Formale Sprache 4. Unterschied Iteration/Rekursion 2. Rekursive Methoden 1. Beispiel: Fakultät 2. Beispiel: "Türme

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Rekursive Prozeduren zu charakterisieren. Terminierung von rekursiven Prozeduren mit Hilfe von geeigneten Abstiegsfunktionen

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

Mehr

Algorithmik 1. Kapitel 8 - Rekursion. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2/8 Programmiersysteme / Künstliche Intelligenz

Algorithmik 1. Kapitel 8 - Rekursion. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2/8 Programmiersysteme / Künstliche Intelligenz Kapitel 8 - Rekursion Algorithmik 1 8.2 Türme von Hanoi 8.3 Palindromtest 8.4 Fibonacci-Zahlen 8.5 Skyline-Problem Teile-und-Herrsche Prof. Dr. Michael Philippsen / Prof. Dr. Herbert Stoyan Friedrich-Alexander-Universität

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017 2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Rekursion. Beispiel Fakultät (iterativ) Rekursive Java-Implementierung. Beispiel Fakultät (rekursiv) n! = n

Rekursion. Beispiel Fakultät (iterativ) Rekursive Java-Implementierung. Beispiel Fakultät (rekursiv) n! = n Rekursion Beispiel Fakultät (iterativ) Methoden können Methoden aufrufen Methoden können nicht nur andere Methoden aufrufen, sondern auch sich selbst Eine Methode, die sich selbst (direkt oder indirekt)

Mehr

Rekursion. Sie wissen wie man Programme rekursiv entwickelt. Sie kennen typische Beispiele von rekursiven Algorithmen

Rekursion. Sie wissen wie man Programme rekursiv entwickelt. Sie kennen typische Beispiele von rekursiven Algorithmen Rekursion Sie wissen wie man Programme rekursiv entwickelt Sie kennen typische Beispiele von rekursiven Algorithmen Sie kennen die Vor-/Nachteile von rekursiven Algorithmen Einführung 2 von 40 Rekursiver

Mehr

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 robert.legenstein@igi.tugraz.at 1 Kapitel 2 Algorithmische robert.legenstein@igi.tugraz.at 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen

Mehr

11. Rekursion. - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion

11. Rekursion. - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion 11. Rekursion 258 K. Bothe, PI1, WS 2000/01 259 ' ( ) - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion - induktiv definierte Funktionen - rekursive Problemlösungen

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!

11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n! Mathematische Rekursion 11. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration, Lindenmayer Systeme Viele mathematische Funktionen sind sehr natürlich

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

Mehr

Stack. Seniorenseminar Michael Pohlig

Stack. Seniorenseminar Michael Pohlig Stack Seniorenseminar 21.06.2013 Michael Pohlig (pohlig@kit.edu) Übersicht 1. Axiomatik eins Kellers und seine Software- Realisierung 2. Bedeutung der Rekursion in der Mathematik 3. Rekursive Programmierung.

Mehr

12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =

12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! = Lernziele Sie verstehen, wie eine Lösung eines rekursives Problems in Java umgesetzt werden kann. Sie wissen, wie Methoden in einem Aufrufstapel abgearbeitet werden. 12. Rekursion Mathematische Rekursion,

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Algorithmen und Datenstrukturen Tafelübung 1. Jens Wetzl 26. Oktober 2011

Algorithmen und Datenstrukturen Tafelübung 1. Jens Wetzl 26. Oktober 2011 Algorithmen und Datenstrukturen Tafelübung 1 Jens Wetzl 26. Oktober 2011 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen Ideen zur Bestimmung der Länge einer Liste: 1. Verwalte ein globales Attribut int laenge. Fügt man ein Element zur Liste oder löscht es, wird

Mehr

Inhalt Kapitel 2: Rekursion

Inhalt Kapitel 2: Rekursion Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29 Beispiele und Definition Rekursion 30 Man kann eine Funktion

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Informatik II Übung 02. Benjamin Hepp 8 March 2017

Informatik II Übung 02. Benjamin Hepp 8 March 2017 Informatik II Übung 02 Benjamin Hepp benjamin.hepp@inf.ethz.ch 8 March 2017 Nachbesprechung U1 08.03.2017 Informatik II - Übung 01 2 Nachbesprechung U1.1 f(a,b) = a x b = a) Induktionsbeweis ueber a nicht

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben

Mehr

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013/14 Aufgabenblatt 5 2. Dezember

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Informatik II - Übung 02

Informatik II - Übung 02 Informatik II - Übung 02 Katja Wolff katja.wolff@inf.ethz.ch Themen 1. Ein Algorithmus und seine Implementierung in Java 2. Java: Elementare Aspekte 3. Klassen und Referenzen 4. Syntaxanalyse und Compiler

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test Manche Funktionen, deren Ergebnistyp void ist, geben gar keine Werte zurück im Beispiel: write() und main(). Diese Funktionen heißen Prozeduren. Das Hauptprogramm hat immer als Parameter ein Feld args

Mehr

6. Algorithmen auf Zeichenketten

6. Algorithmen auf Zeichenketten 6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten

Mehr

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität) Über-/Rückblick Algorithmenbegriff: Berechenbarkeit Turing-Maschine RAM µ-rekursive Funktionen Zeit Platz Komplexität Algorithmentechniken Algorithmenanalyse (Berechnung der Komplexität) Rekursion Iteration

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Datenstruktur Baum und Rekursion Software Entwicklung 1

Datenstruktur Baum und Rekursion Software Entwicklung 1 Datenstruktur Baum und Rekursion Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Datenstruktur Baum Bäume gehören zu den wichtigsten in der Informatik auftretenden Datenstrukturen.

Mehr

Listen. M. Jakob. 20. September Gymnasium Pegnitz

Listen. M. Jakob. 20. September Gymnasium Pegnitz Listen M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis 1 Hinführung: Wartenschlangen (6 Std.) 2 Grundprinzip von Listen Rekursion (10 Std.) 3 Die einfach verkettete Liste als Kompositum

Mehr

Algorithmik 1. Kapitel 8 - Rekursion. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2/8 Programmiersysteme / Künstliche Intelligenz

Algorithmik 1. Kapitel 8 - Rekursion. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2/8 Programmiersysteme / Künstliche Intelligenz Kapitel 8 - Rekursion Algorithmik 1 8. Palindromtest 8.5 Skyline-Problem Teile-und-Herrsche Prof. Dr. Michael Philippsen / Prof. Dr. Herbert Stoyan Friedrich-Alexander-Universität Erlangen-Nürnberg Informatik

Mehr

Kapitel 08: Rekursion und Terminierung Software Entwicklung 1

Kapitel 08: Rekursion und Terminierung Software Entwicklung 1 Kapitel 08: Rekursion und Terminierung Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Rekursion ist eine elegante Strategie zur Problemlösung, die es erlaubt eine Problemstellung

Mehr

Übungsblatt 4. Thema: Imperative Konstrukte und Speicherorganisation in Java, Algorithmen und Rekursion

Übungsblatt 4. Thema: Imperative Konstrukte und Speicherorganisation in Java, Algorithmen und Rekursion Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 4 Ausgegeben am: Abgabe bis: 18.11.2005 29.11.2005 (Theorie) 2.12.2005 (Praktisch) Thema:

Mehr

Übungspaket 22 Rekursive Funktionsaufrufe

Übungspaket 22 Rekursive Funktionsaufrufe Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 9, Donnerstag 19.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 9, Donnerstag 19. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 9, Donnerstag 19. Dezember 2013 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

Mehr

Algorithmen und Datenstrukturen"

Algorithmen und Datenstrukturen Lehrstuhl für Medieninformatik Universität Siegen Fakultät IV 9 Rekursion Version: WS 14/15 Fachgruppe Medieninformatik 9.1 9 Rekursion... Motivation: Rekursive Formulierung von Algorithmen führt in vielen

Mehr

OOP Aufgabenblatt 7 6. Dezember 2013

OOP Aufgabenblatt 7 6. Dezember 2013 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 7 6. Dezember 2013 Aufgabe 1 Hausaufgabe Nr. 4 (Klein) Implementieren Sie, ohne Arrays oder eine sonstige Kollektion zu nutzen, folgende Fingerübungen zu Rekursion

Mehr

Algorithmen und Datenstrukturen"

Algorithmen und Datenstrukturen Lehrstuhl für Medieninformatik Universität Siegen Fakultät IV 9 Rekursion Version: WS 14/15 Fachgruppe Medieninformatik 9.1 9 Rekursion... Motivation: Rekursive Formulierung von Algorithmen führt in vielen

Mehr

Beispiel 1: Fakultät

Beispiel 1: Fakultät 16. Rekursion Beispiel 1: Fakultät Rekursive Definition der Fakultät (Mathematik) n! = 1 falls n=0 n*(n-1)! falls n>0 Programmierung mittels einer rekursiven Funktion in C++ double fakultaet(int n) if

Mehr

Friedrich-Alexander-Universität Erlangen-Nürnberg

Friedrich-Alexander-Universität Erlangen-Nürnberg Algorithmik 1 M. Philippsen, H. Stoyan, Friedrich-Alexander-Universität Erlangen-Nürnberg Informatik 2/8/9 Kapitel 8 - Rekursion 8.1 Einführung der Rekursion 8.2 Türme von Hanoi 8.3 Fibonacci-Zahlen 8.4

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile in Anlehnung an

Mehr

Informatik II - Tutorium 2

Informatik II - Tutorium 2 Informatik II - Tutorium 2 Vincent Becker vincent.becker@inf.ethz.ch 07.03.2018 Vincent Becker 08.03.2018 1 Übungsblatt 1 Vincent Becker 08.03.2018 2 U1.A1 f(a, b) = a x b = a) Induktionsbeweis über a

Mehr

Mathematische Rekursion

Mathematische Rekursion Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische

Mehr

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 11 Rekursion Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Informatik I Tutorium WS 07/08

Informatik I Tutorium WS 07/08 Informatik I Tutorium WS 07/08 Vorlesung: Prof. Dr. F. Bellosa Übungsleitung: Dipl.-Inform. A. Merkel Tutorium: 12 Tutor: Jens Kehne Tutorium 13: Dienstag, 05. Februar 2008 Agenda des heutigen Tutoriums

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen nwendung der Rekursion 11. Rekursion, Komplexität von lgorithmen Teil 2 Java-eispiele: Power1.java Hanoi.java Rekursiv definierte Funktionen - Fibonacci-Funktion - Fakultät, Potenz -... Rekursiver ufbau

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Aufgabe 1 (12 Punkte)

Aufgabe 1 (12 Punkte) Aufgabe 1 (12 Punkte) Schreiben Sie eine Klasse public class ZinsesZins, die zu einem gegebenen Anfangskapital von 100,00 die Kapitalentwicklung bei einer jährlichen nachschüssigen Verzinsung in Höhe von

Mehr

JAVA - Rekursion

JAVA - Rekursion Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Allgemeines Fakultät Fibonacci Türme von Hanoi Übungen Informatik 1 Folie 2 Ein Objekt

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Hannes Schwarz - WS-06/07 Hannes.Schwarz@uni-konstanz.de Getting Ready for the ACM Programming Contest Übersicht Übersicht Was ist dynamische Programmierung? Entwicklung eines

Mehr

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10 Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2009/10 22. Februar 2010 Aufgabe 1 2 3 4 5 6 7 Summe mögliche Punkte 15 15 20 15 20 20 15 120 erreichte Punkte Note: Hinweise: Diese

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

Mehr

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-11 Teile und herrsche Idee: teile den Kartenstapel

Mehr

1 Programmierfehler und ihre Behebung

1 Programmierfehler und ihre Behebung 1 Programmierfehler und ihre Behebung (kleiner lebenspraktischer Ratgeber) Grundsätze: Jeder Mensch macht Fehler... insbesondere beim Programmieren. Läuft ein Programm, sitzt der Fehler tiefer. Programmierfehler

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 05/03 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach

Mehr

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya

Mehr

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger VL-04: Rekursionsgleichungen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger SS 2017, RWTH DSAL/SS 2017 VL-04: Rekursionsgleichungen 1/37 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Dynamische Programmierung Thomas Karmann 4. Juni 2010 1 / 36 Übersicht Einführung Definition Anwendung Funktionsweise Grundlagen Memoisation Top-Down Bottom-Up Grenzen Anwendungsbeispiele

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Informatik II Übung 2. Pascal Schärli

Informatik II Übung 2. Pascal Schärli Informatik II Übung 2 Pascal Schärli pascscha@student.ethz.ch 08.03.2018 Code Expert Pascal Schärli 08.03.2018 2 Nachbesprechung Serie 1 Aufgabe 1 a) Induktionsbeweis über a möglich? Nein! Der Induktionsanfang

Mehr

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Überblick + Administratives Besprechung der Vorlesung

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden Teil 2

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden Teil 2 Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Teil 2 Rekursion 2/23 Definition Rekursion, die siehe Rekursion Was ist Rekursion Allgemein: Rekursion ist die Definition

Mehr

Programmierung mit C Algorithmen

Programmierung mit C Algorithmen Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",

Mehr