Algorithmen & Programmierung. Rekursive Funktionen (3)

Größe: px
Ab Seite anzeigen:

Download "Algorithmen & Programmierung. Rekursive Funktionen (3)"

Transkript

1 Algorithmen & Programmierung Rekursive Funktionen (3)

2 Türme von Hanoi

3 Türme von Benares / Hanoi 1883 erfand der französische Mathematiker Lucas folgende Geschichte: Im Großen Tempel von Benares, unter dem Dom, der die Mitte der Welt markiert, ruht eine Messingplatte, in der drei Diamantnadeln befestigt sind, jede eine Elle hoch und so stark wie der Körper einer Biene. Bei der Erschaffung der Welt hat Brahma vierundsechzig Scheiben aus purem Gold auf eine der Nadeln gesteckt, wobei die größte Scheibe auf der Messingplatte ruht und die übrigen, immer kleiner werdend, eine auf der anderen. Tag und Nacht sind die Priester unablässig damit beschäftigt, den festgeschriebenen und unveränderlichen Gesetzen von Brahma folgend, die Scheiben von einer Diamantnadel auf eine andere zu setzen, wobei der oberste Priester nur jeweils eine Scheibe auf einmal umsetzen darf und zwar so, dass sich nie eine kleinere Scheibe unter einer größeren befindet. Sobald dereinst alle vierundsechzig Scheiben von der Nadel, auf die Brahma sie bei der Erschaffung der Welt gesetzt hat, auf eine der anderen Nadeln gebracht sein werden, zerfallen der Turm samt dem Tempel und allen Brahmanen zu Staub und die Welt wird mit einem Donnerschlag untergehen. 501

4 Türme von Hanoi Problembeschreibung A B C Ein Turm aus N beweglichen Teilen soll von Position A nach Position C bewegt werden Bedingungen / Voraussetzungen es stehen drei Ablagemöglichkeiten A, B und C für die Teile zur Verfügung die Größe eines Teils unterscheidet sich von der Größe aller anderen Teile ein Teil darf nur auf einem größeren Teil liegen, aber nicht umgekehrt zu einem Zeitpunkt darf nur ein Teil bewegt werden Nebenfrage Wieviel Schritte (Zeit) benötigt man für die Umschichtung? 502

5 Türme von Hanoi (N=3) A B C 503

6 Türme von Hanoi (N=3) A B C 504

7 Türme von Hanoi (N=3) A B C 505

8 Türme von Hanoi (N=3) A B C 506

9 Türme von Hanoi (N=3) A B C 507

10 Türme von Hanoi (N=3) A B C 508

11 Türme von Hanoi (N=3) A B C 509

12 Türme von Hanoi (N=3) A B C 510

13 Herleitung des Rekursionsprinzips N=3 Wir haben gezeigt, dass der gesamte Turm von A (via B) nach C geschoben werden kann. Wir haben dazu den Teilturm der Höhe 2, der sich auf der größten Scheibe befand nach B verschoben, anschließend die größte Scheibe nach C verschoben und schließlich den Teilturm von B nach C bewegt. N=4 Da ein Turm der Höhe 3 umgeschichtet werden kann, verschieben wir 1. den Teilturm der Höhe 3 von A nach B (via C) 2. die unterste Scheibe von A nach C 3. den Teilturm der Höhe 3 von B nach C (via A) 511

14 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 512

15 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 513

16 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 514

17 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 515

18 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 516

19 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 517

20 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 518

21 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 519

22 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 520

23 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 521

24 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 522

25 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 523

26 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 524

27 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 525

28 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 526

29 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 527

30 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 528

31 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 529

32 Türme von Hanoi (N=4) A B C 1. Verschiebe Teilturm der Höhe 3 von A nach B (via C) 2. Verschiebe die letzte Scheibe direkt von A nach C 3. Verschiebe Teilturm der Höhe 3 von B nach C (via A) 530

33 Herleitung des Rekursionsprinzips N=3 A B C 1. Verschieben des Teilturms der Höhe 2 von A nach B (via C) 2. Bewegen der untersten Scheibe von A nach C 3. Verschieben des Teilturms der Höhe 2 von B nach C (via A) N=4 1. Verschieben des Teilturms der Höhe 3 von A nach B (via C) 2. Bewegen der untersten Scheibe von A nach C 3. Verschieben des Teilturms der Höhe 3 von B nach C (via A) Für beliebige N 1. Verschieben des Teilturms der Höhe N 1 von A nach B (via C) 2. Bewegen der untersten Scheibe von A nach C 3. Verschieben des Teilturms der Höhe N 1 von B nach C (via A) Verschiebungen eines Turmes der Höhe 3 531

34 Ausgabe für Hanoi(3, 'A','B','C') Bewege Scheibe von A nach C Bewege Scheibe von A nach B Bewege Scheibe von C nach B }Hanoi(2,'A','C','B') Bewege Scheibe von A nach C Bewege Scheibe von B nach A Bewege Scheibe von B nach C Bewege Scheibe von A nach C } Hanoi(2,'B','A','C') 532

35 Anzahl der Umschichtungen Berechnung mit Induktion Wir haben für N=3 insgesamt sieben Scheiben verschoben (=2 N 1) Sei N=4: 1. Teilturm hat Höhe N 1, also 2 N 1 1 Bewegungen (7 Schritte) 2. Restscheibe wird direkt vom Ausgangs- zum Zielpunkt verschoben (1 Schritt) 3. Teilturm hat Höhe N 1, d.h. wieder 2 N 1 1 Bewegungen (7 Schritte) sind insgesamt 15 Schritte (2 (2 N 1 1) + 1) = 2 N 1 533

36 Backtracking

37 Backtracking Backtracking (Rückverfolgung) Backtracking ist eine Problemlösungsmethode, die auf folgendem Prinzip basiert: 1. Schaue, ob Du am Ziel bist. Wenn ja, dann endet der Algorithmus an dieser Stelle. 2. Wähle an der aktuellen Position einen noch nicht untersuchten Weg zum Ziel und gehe zu Falls es keine möglichen Wege gibt, dann gehe zurück zu der Position, die noch unerforschte Wege bietet und gehe zu 1. Führt ein Teilweg nicht zum Ziel, dann wird dieser Weg verworfen und an der Verzweigung des vorherigen Teilwegs weitergesucht. Backtracking und Rekursion Backtracking ist als Verfahren nicht notwendigerweise rekursiv, wird aber meist rekursiv implementiert. 535

38 Backtracking Beispiel Ein typisches Problem, das mit Backtracking gelöst werden kann, ist die Zielsuche in einem Labyrinth. Lösung mittels Backtracking 1. Schaue ob Du am Ziel bis. Wenn ja Algorithmus endet 2. Versuche zuerst geradeaus (oben), dann nach rechts, danach rückwärts (unten) und schließlich links mit Schritt 1 fortzufahren. Wegmarkierung Um sich nicht im Kreis zu drehen, ist es nötig, bereits besuchte Wege zu markieren. Von Wegpositionen, die garantiert nicht zum Ziel führen (weil alle von dieser Position startenden Teilsuchen erfolglos blieben) kann die Markierung entfernt werden. Dann bleibt am Ende nur der Weg übrig, der zum Ziel führt. 536

39 Backtracking Strategie: Oben Rechts Unten Links ############ # # # # # # # # #### # # ### # # # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Realisierung Das Labyrinth sei ein zweidimensionales char- Feld. Markierungen Leerzeichen kennzeichnen begehbare Wege Das #-Zeichen markiert Hindernisse. Buchstabe Z kennzeichnet das Ziel Ein Punkt (.) markiert besuchte Wege Startposition Eine beliebige begehbare Position in der Matrix. 537

40 Backtracking Strategie: Oben Rechts Unten Links ############ #. # # # # # # # #### # # ### # # # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Startposition sei (1,1): Der Algorithmus sucht im rekursiven Abstieg zunächst nach oben. Dies bleibt aufgrund der Begrenzung erfolglos. Es wird im rekursiven Abstieg nach rechts weitergesucht, was möglich ist. Danach wird wiederholt versucht nach oben zu gehen (was nicht möglich ist) und im Anschluss nach rechts (was möglich ist) bis auch der Weg nach rechts versperrt ist. 538

41 Backtracking Strategie: Oben Rechts Unten Links ############ #...# # # # # # # #### # # ### # # # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Jetzt ist nur ein rekursiver Abstieg nach unten möglich. Es wird solange rekursiv nach oben (nicht möglich), rechts (nicht möglich) und unten abgestiegen, bis auch der Weg nach unten versperrt ist. 539

42 Backtracking Strategie: Oben Rechts Unten Links ############ #...# # # # #. # # #### #. # ### # #. # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Es gibt für den rekursiven Abstieg keine weiteren Verzweigungsmöglichkeiten mehr, da alle Wege entweder blockiert (rechts, unten, links) oder bereits markiert (oben) sind. Deshalb werden beim rekursiven Aufstieg / Backtracking die letzten Entscheidungen solange zurückgenommen, bis es wieder eine unerforschte Alternative für den Abstieg der Rekursion gibt. 540

43 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # # # # # #### # # ### # # # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Die unerforschte Alternative bietet sich an der durch die rote Markierung dargestellten Position, denn ab dieser wurde noch nicht nach unten verzweigt. Da jeweils nach oben und rechts nicht verzweigt werden kann (da bereits besucht bzw. markiert oder blockiert), wird im rekursiven Abstieg der Weg nach unten verfolgt, bis wieder ein Hindernis den Weg versperrt. 541

44 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # #. # # # ####. # # ### #. # # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Da ab der rot markierten Position die Wege nach oben, rechts und unten versperrt bzw. bereits markiert sind, geht es im rekursiven Abstieg nach links weiter. 542

45 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # #. # # # ####. # # ### #....# # # # ###### # # # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Analog der bisherigen Verfahrensweise geht es im rekursiven Abstieg erst nach unten weiter (da oben und rechts gesperrt bzw. markiert sind) und dann nach rechts. 543

46 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # #. # # # ####. # # ### #...# # # #. ###### # #... # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ An der rot markierten Position gibt es für den rekursiven Abstieg keine weitere Verzweigungsmöglichkeit mehr, da alle Wege entweder versperrt oder markiert sind Sackgasse. Deshalb muss diese Teillösung wieder verworfen werden. Im Rekursionsaufstieg / Backtracking wird bis zu der Position zurückgegangen, die für den Rekursionsabstieg noch eine unerforschte Alternative bietet. 544

47 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # #. # # # ####. # # ### #...# # # #. ###### # #... # Z # # ## ## # # ## ## ## # # ## ## ## # # ## # ############ Ab der rot markierten Position kann im rekursiven Abstieg wieder verzweigt werden: zunächst mehrere Male nach unten dann wiederholt nach rechts schließlich mehrmals nach oben und noch einmal nach rechts 545

48 Backtracking Strategie: Oben Rechts Unten Links ############ #... # # # #. # # # ####. # # ### #...# # # #. ###### # #... #.Z # # ##. ##. # # ## ##. ##. # # ## ##. ##. # # ##...# ############ Das Ziel wurde erreicht. 546

49 Backtracking Strategie: Unten Rechts Oben Links ############ #. # #. # # # # #...#### # # ###. # # # #..# ###### #. #... #. Z #..#. ##. ##. # #. ##. ##. ##. # #. ##. ##. ##. # #...##...# ############ Achtung Verändert man die Suchstrategie, z.b. durch Ändern der Reihenfolge, welche Richtung zuerst untersucht wird, kann es zu anderen Ergebnissen kommen (falls mehrere Wege aus dem Labyrinth existieren). Beispiel Vertauschen wir in der Suchreihenfolge oben mit unten, dann findet der Algorithmus einen anderen Weg zum Ziel. 547

50 Das Acht-Damen-Problem

51 Acht-Damen-Problem Problembeschreibung Beim Schach darf sich die Spielfigur Dame horizontal, vertikal und diagonal auf dem 8x8-Felder großen Spielfeld bewegen, d.h. dass eine Dame jede (gegnerische) Spielfigur bedroht, die sich horizontal, vertikal oder diagonal von ihr aus erreichen lässt. Eine interessante Aufgabe besteht darin, acht Damen so auf dem Spielfeld zu platzieren, dass sie sich nicht gegenseitig bedrohen. Eine mögliche Lösung ist nebenstehend abgebildet. 549

52 Verallgemeinerung Wie können N Damen auf einem NxN großen Schachbrett angeordnet werden, so dass sie sich nicht bedrohen? Lösungsidee Wir nutzen die Tatsache aus, dass sich in einer Reihe nur eine Dame befinden kann und ordnen jede Dame auf einer der N möglichen Felder einer Reihe so an, dass sie von keiner anderen Dame bedroht wird: 1. wir setzen die erste Dame an eine der N Positionen in Reihe 1 2. wir setzen die zweite Dame an eine der N Positionen in Reihe 2... N. wir setzen die n-te Dame an eine der N Positionen in Reihe N Falls sich in einem der N Schritte eine Bedohungssituation ergibt, wählen wir eine andere mögliche Position der aktuellen Reihe aus Falls sich keine Positionierungsmöglichkeit einer Dame in der aktuellen Reihe ergibt, wird mittels Backtracking in die Reihe zurückgesprungen, in der es noch Wahlmöglichkeiten gibt. 550

53 Beispiel: Vier-Damen-Problem Backtracking nötig 551

54 Beispiel: Vier-Damen-Problem Backtracking nötig Backtracking nötig 552

55 Beispiel: Vier-Damen-Problem Backtracking nötig Backtracking nötig 553

56 Beispiel: Vier-Damen-Problem Gültige Anordnung gefunden! 554

57 N-Damen-Problem Variante Eine Variante des N-Damen-Problems besteht darin, die Anzahl möglicher Anordnungen von N Damen auf einem NxN-Spielfeld herauszufinden: N Anzahl Lösungen

58 Zusammenfassung

59 Anwendung rekursiver Algorithmen Probleme die von Natur aus rekursiv definiert sind, z.b. die Erzeugung und Erkennung formaler Sprachen Probleme deren Unterprobleme beim Top-Down-Entwurf die selbe Komplexität wie das Ausgangsproblem aufweisen Probleme die auf einer umgekehrten Verarbeitungsreihenfolge basieren Probleme, bei denen die Größe von Ergebnis bzw. Zwischenergebnissen im Vorhinein nicht bekannt ist Probleme, die auf rekursiven Datenstrukturen basieren Vorlesung Datenstrukturen 557

60 Rekursion vs. Iteration Realisierung Rekursion (Funktionsmodell) Rekursiver Aufruf einer Funktion Iteration (Zustandsmodell) Durchführen der Anweisungsfolge eines Iterationsschrittes Steuerung Die Parameter einer Funktion werden in der Funktion selbst modifiziert und auf Erreichen einer Abbruchbedingung getestet Die Steuerung der Anzahl an Iterationsschritten erfolgt mit Hilfe von Zählvariablen Speicherung von Daten Die Speicherung eines verarbeiteten Elements erfolgt implizit durch automatische Sicherung der Funktionsparameter auf dem Stack Ein zu verarbeitendes Element bzw. eine Elementefolge muss explizit gespeichert werden (z.b. in einem Feld) Zugriff auf Daten Der Zugriff auf Elemente einer Folge ist begrenzt auf die aktuelle Komponente der gerade aktiven Funktionsinstanz Der Zugriff auf Elemente einer Folge kann wahlfrei erfolgen 558

61 Rekursion - Bewertung Vorteile Insbesondere bei rekursiv definierten Problemen sind rekursive Implementierungen wesentlich kürzer, einfacher, verständlicher und mathematisch eleganter als iterative Lösungen. Rekursive Funktionen können variabel große Datenmengen verarbeiten und speichern. Nachteile Fazit Aufgrund der temporären Sicherung aller lokalen Variablen und der Einträge der Parameterliste für jede aufgerufene Funktionsinstanz besteht ein hoher Speicherbedarf. Unter Umständen kann bei sehr vielen rekursiven Funktionsaufrufen sogar der Stack überlaufen. Wegen des aufgrund der temporären Sicherung entstehenden Overheads sind rekursive Lösungen meist wesentlich weniger effizient als vergleichbare iterative Lösungen. Rekursion ist (nur) eine von mehreren möglichen Problemlösungsstrategien. Wenn einfache iterative Lösungen für ein Problem existieren, so sind diese i.d.r. zu bevorzugen. 559

62 Ende der Vorlesung

Nadel 1 Nadel 2 Nadel 3

Nadel 1 Nadel 2 Nadel 3 Die Türme von Hanoi Nadel 1 Nadel 2 Nadel 3 Der französische Mathematiker Edouard Lucas hat 1883 eine kleine Geschichte erfunden, die unter dem Namen Die Türme von Hanoi weltberühmt wurde : Im Großen Tempel

Mehr

1) Das Treppenproblem

1) Das Treppenproblem 1) Das Treppenproblem Fachseminar Informatik Die Eingangstreppe des Max-von-Laue-Gymnasium mit 7 Stufen kann man auf verschiedene Arten hinaufgehen, z.b: Wie viele verschiedene Möglichkeiten gibt es, die

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

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

9.1 Einführung. Stack (Forts.) Stack. rekursiv: (aus lat.) selbstbezüglich Algorithmen und Programmierung

9.1 Einführung. Stack (Forts.) Stack. rekursiv: (aus lat.) selbstbezüglich Algorithmen und Programmierung Algorithmen und Programmierung Wintersemester 06/0 9 Einführung Wiederholung 9 Einführung rekursiv: (aus lat) selbstbezüglich Algorithmen und Programmierung 9 Kapitel Von Türmen und Damen Rekursion und

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Inhalt. 7 Rekursionen Eine unendliche Geschichte Fakultät Türme von Hanoi Dr.

Inhalt. 7 Rekursionen Eine unendliche Geschichte Fakultät Türme von Hanoi Dr. Inhalt 7 Rekursionen... 7-2 7.1 Eine unendliche Geschichte... 7-2 7.2 Fakultät... 7-3 7.3 Türme von Hanoi... 7-5 Propädeutikum 7-1/6 7 Rekursionen 7.1 Eine unendliche Geschichte >> Es war einmal ein Mann,

Mehr

Rekursive Funktionen (1)

Rekursive Funktionen (1) Rekursive Funktionen (1) Rekursive Algorithmen Wenn Gesamtlösung durch Lösen gleichartiger Teilprobleme erzielbar: Rekursion möglich Beispiel: Fakultät einer ganzen Zahl n: n i n! = i=1 für n > 0 1 für

Mehr

Rekursive Funktionen (1)

Rekursive Funktionen (1) Rekursive Funktionen (1) Rekursive Algorithmen Wenn Gesamtlösung durch Lösen gleichartiger Teilprobleme erzielbar: Rekursion möglich Beispiel: Fakultät einer ganzen Zahl n: nn ii nn! = ii=1 für nn > 0

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

Einführung in die Programmierung Wintersemester 2017/18

Einführung in die Programmierung Wintersemester 2017/18 Einführung in die Programmierung Wintersemester 2017/18 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Rekursion Inhalt Rekursion: Technik Rekursion

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

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

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

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

SOA verspielt - rekursive BPEL Prozesse

SOA verspielt - rekursive BPEL Prozesse SOA verspielt - rekursive BPEL Prozesse Guido Neander MT AG Ratingen Schlüsselworte SOA, BPEL, rekursive Programmierung, Development, Deployment Einleitung Bei komplexen Problemstellungen (z. B. Aufgaben

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

Kapitel 7: Rekursion. Inhalt. Rekursion: Technik Rekursion vs. Iteration

Kapitel 7: Rekursion. Inhalt. Rekursion: Technik Rekursion vs. Iteration Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Inhalt Rekursion: Technik Prof. Dr. Günter Rudolph Fakultät

Mehr

Einführung in die Programmierung Wintersemester 2010/11

Einführung in die Programmierung Wintersemester 2010/11 Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Rekursion Inhalt Rekursion: Technik Rekursion

Mehr

Teil 14: Rekursive Programmierung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 14: Rekursive Programmierung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 14: Rekursive Programmierung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 14 Rekursive Programmierung... 3 14.1 Die Fakultätsfunktion...

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

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

Beim rekursiven Aufruf einer Funktion wird jeweils ein Duplikat der gesamten Funktion im Speicher abgelegt.

Beim rekursiven Aufruf einer Funktion wird jeweils ein Duplikat der gesamten Funktion im Speicher abgelegt. Rekursion Unter Rekusion verstehen wir eine Funktion, die sich selbst aufruft. Da sie das nicht immerzu tun kann (das Programm würde ewig laufen) benötigt jeder rekursive Aufruf eine Abbruchbedingung!

Mehr

4 Rekursionen. 4.1 Erstes Beispiel

4 Rekursionen. 4.1 Erstes Beispiel 4 Rekursionen Viele Algorithmen besitzen sowohl eine iterative als auch eine rekursive Lösung. Sie unterscheiden sich darin, dass die iterative Version meist einen etwas längeren Kode besitzt, während

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (2)

Algorithmen & Programmierung. Rekursive Funktionen (2) Algorithmen & Programmierung Rekursive Funktionen (2) Arten von Rekursion Direkte Rekursion Den Aufruf einer Funktion direkt aus ihrem Funktionskörper heraus bezeichnet man als direkte Rekursion (so haben

Mehr

Backtracking mit Heuristiken

Backtracking mit Heuristiken Backtracking mit Heuristiken Thomas Dübendorfer thomas@duebendorfer.ch 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth

Mehr

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck Kasparov versus Deep Blue Institut für Theoretische Informatik Universität zu Lübeck 18. Vorlesung zu Informatik A für MLS 14. Dezember 2006 Die Lernziele der heutigen Vorlesung und der Übungen. 1 Das

Mehr

C++ - Kontrollstrukturen Teil 2

C++ - Kontrollstrukturen Teil 2 C++ - Kontrollstrukturen Teil 2 Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Schleife und Verzweigung kombiniert SV initialisieren while(b1) if(b2) w f V1 V2 SV Richtung Ziel verändern Wichtiger Baustein vieler

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

ALPII Objektorientierte Programmierung

ALPII Objektorientierte Programmierung LPII Objektorientierte Programmierung für das 5. Übungsblatt 0 Prof. Dr. Margarita Esponda Sieb des Eratosthenes. Jahrhundert v. hr. Das Sieb des Eratosthenes ist ein sehr bekannter lgorithmus, der für

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Beispiele für Algorithmen Im folgenden Abschnitt sollen ausgewählte

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

Rekursive Algorithmen

Rekursive Algorithmen Rekursive Algorithmen In der Mathematik sind viele Funktionen rekursiv definiert. Der Begriff der Rekursion beinhaltet, dass zur Definition einer Funktion diese selbst wieder mit benutzt wird, allerdings

Mehr

Backus-Notation und Syntaxanalyse

Backus-Notation und Syntaxanalyse Einführung zur Aufgabengruppe 3 Rekursionen Backus-Notation und Syntaxanalyse Programmierpraktikum 1/5 Rekursionen Beispiel: Eine unendliche Geschichte >> Es war einmal ein Mann, der hatte sieben Söhne.

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

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

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

Projekt: Der Turm von Hanoi

Projekt: Der Turm von Hanoi Projekt: Der Turm von Hanoi als Java Applet... Monika Wojtowiec Michael Gebhard STephan Kambor Dauer ca. 20 min Version 1.01 Gliederung ~> 1. Aufgabenstellung ~> 2. Das Spiel Geschichte Regeln Prinzip

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

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1) Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1) Anweisungen: Eingabeanweisungen, z.b. Eingabe: x Ausgabeanweisungen, z.b. Ausgabe: Das Maximum ist, max Die Symbole x und max werden

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

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

DAP2 Probeklausur. Matrikelnummer Vorname Nachname. Datum: 24. Juli C. Sohler A. Krivo²ija, A. Rey, H. Sandvoÿ

DAP2 Probeklausur. Matrikelnummer Vorname Nachname. Datum: 24. Juli C. Sohler A. Krivo²ija, A. Rey, H. Sandvoÿ SoSe 2017 C. Sohler A. Krivo²ija, A. Rey, H. Sandvoÿ DAP2 Probeklausur Datum: 2. Juli 2017 Matrikelnummer Vorname Nachname Diese Klausur besteht aus acht Aufgaben mit insgesamt 50 Punkten. Zum Bestehen

Mehr

Uninformierte Suche in Java Informierte Suchverfahren

Uninformierte Suche in Java Informierte Suchverfahren Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2008/2009 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln 8-Damen-Problem Gegeben: Schachbrett

Mehr

Inhalt. 3. Spezielle Algorithmen

Inhalt. 3. Spezielle Algorithmen Inhalt 0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker 1. Algorithmen - Wesen, Eigenschaften, Entwurf 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen

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

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if

Mehr

Der Turm von Hanoi [als Java Applet]

Der Turm von Hanoi [als Java Applet] Monika Wojtowiec Michael Gebhard STephan Kambor Projektdokumentation: Der Turm von Hanoi [als Java Applet] Index Seite 1. Die Aufgabenstellung 2 2. Das Spiel 2 3. Die Lösung 3 4. Die Umsetzung 6 5. Die

Mehr

3. rekursive Definition einer Folge

3. rekursive Definition einer Folge 3. rekursive Definition einer Folge In vielen Fällen ist eine explizite Formel für das n-te Glied nicht bekannt, es ist hingegen möglich, aus den gegebenen Gliedern das nächste Glied zu berechnen, d.h.

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

Übungen zum Vortrag Backtracking mit Heuristiken

Übungen zum Vortrag Backtracking mit Heuristiken Übungen zum Vortrag Backtracking mit Heuristiken A) Java-Implementierung studieren von Backtracking im Labyrinth B) Pseudocode schreiben zu Backtracking beim n Damen Problem C) Implementierung der Springerwege

Mehr

Die Türme von Hanoi. Wollen

Die Türme von Hanoi. Wollen Eine Loesungsstrategie 3 Die Türme von Hanoi Eine mögliche Strategie zur Lösung des Puzzles ist folgende: Falls der Turm die Höhe n hat, bewege den Turm der Höhe n-1 zunächst auf den dritten Pfahl. (Wie

Mehr

Spielregeln für Schach

Spielregeln für Schach Gebrauchsartikel mit sozialer Herkunft B-Vertrieb GmbH Anerkannt gemeinnütziges Unternehmen gem. Art. 80 Abs. 1 lit. g und Art. 56 Bst. g DBG Lehnstrasse 90 l CH-9014 St.Gallen Tel. +41 (0)71 280 83 20

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

Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1.

Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1. Der Turm von Hanoi 1. Schritt Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1. Im ersten Schritt legen wir die oberste Scheibe auf Platz 3. Nun legen wir die mittlere Scheibe

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

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

Erste Schritte um Schach zu lernen

Erste Schritte um Schach zu lernen Erste Schritte um Schach zu lernen Erstellt durch wikihow Übersetzungen: Schach ist ein sehr beliebtes Spiel und weithin als eines der ältesten noch gespielten Spiele anerkannt. Obwohl die Regeln von Schach

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

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

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

Rekursive Funktionen und ihre programmtechnische Umsetzung

Rekursive Funktionen und ihre programmtechnische Umsetzung Rekursive Funktionen und ihre programmtechnische Umsetzung Klaus Kusche, Juli 2012 Inhalt Die Idee und ihre Programmierung Die Abarbeitung zur Laufzeit Die Speicherung der Daten Praktisches & Theoretisches

Mehr

Schach Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de

Schach Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de Schach Spielanleitung/Spielregeln Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de Inhalt Schach Spielregeln...1 Einleitung...2 Das Ziel des Spiels...3 Das Spielbrett...4 Züge...5 Das Schlagen von

Mehr

9. Rekursive Algorithmen

9. Rekursive Algorithmen 9. Rekursive Algorithmen Algorithmen, die darauf basieren, dass zur Lösung eines Problems der Algorithmus auf ein oder mehrere Teilprobleme kleinerer Größenordnung angewandt wird. Wesentlich ist, dass

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

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen FD Informatik Mauch SSDL (WHRS) Reutlingen Algorithmen Überblick Definition Notwendigkeit Realisierung Grundkonzepte Umsetzung im Unterricht Algorithmus? Ein Algorithmus ist eine Verwaltungsvorschrift,

Mehr

= =

= = 9. Januar 2007 Arbeitsblatt 9 Übungen zu Mathematik I für das Lehramt an der Grund- und Mittelstufe sowie an Sonderschulen I. Gasser, H. Strade, B. Werner WiSe 06/07 19.12.06 Präsenzaufgaben: 1. Zu Beginn

Mehr

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian 15.12.2005 Agenda Geltungsbereich (Scope) von Variablen Blöcke Der Call-Stack Einschub: Debugging unter Eclipse Der Heap Lebensdauer von Objekten Müllabfuhr: Garbage Collection Exceptions Geltungsbereich

Mehr

Inhalt. 3. Spezielle Algorithmen

Inhalt. 3. Spezielle Algorithmen Inhalt 0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker 1. Algorithmen - Wesen, Eigenschaften, Entwurf 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen

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

Praktikum Algorithmen-Entwurf (Teil 7)

Praktikum Algorithmen-Entwurf (Teil 7) Praktikum Algorithmen-Entwurf (Teil 7) 28.11.2005 1 1 Vier gewinnt Die Spielregeln von Vier Gewinnt sind sehr einfach: Das Spielfeld besteht aus 7 Spalten und 6 Reihen. Jeder Spieler erhält zu Beginn des

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen

Mehr

Prozedurales Programmieren und Problemlösungsstrategien

Prozedurales Programmieren und Problemlösungsstrategien Prozedurales Programmieren und Problemlösungsstrategien Bachelorstudiengänge Umwelttechnik und Maschinenbau Prof. Dr. Thomas Hoch Problemlösungsstrategien Prozedurales Programmieren und Problemlösungsstrategien

Mehr

Safari Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de

Safari Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de Safari Spielanleitung/Spielregeln Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de Inhalt Safari Spielregeln...1 Spielidee...2 Spielstart...3 Spielablauf...4 Tiere suchen...5 Wie fotografiere ich

Mehr

Das Kontrollfluss-Diagramm für Ò ¼ µ:

Das Kontrollfluss-Diagramm für Ò ¼ µ: Das Kontrollfluss-Diagramm für Ò ¼ µ: find0(a,x,n1,n2) t = (n1+n2)/2; no a[t]==x yes no n1==n2 yes return t; no x > a[t] yes return 1; no n1 < t yes return find0(a,x,t+1,n2); return 1; return find0(a,x,n1,t

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h>

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h> Lösungen Übung 5 1. Aufgabe #include int max(int anzarg, int a, int b,...) // Hilfsvariable für variable Parameter va_list argumente; va_start(argumente,b); // "b" letzter Parameter der Funktion,

Mehr

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4. Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Elementare Datenstrukturen Array Linked List Stack Queue Tree (Feld) (Verkettete Liste) (Stapel) (Warteschlange) (Baum) Einschub:

Mehr

Einführung in die objektorientierte Programmierung mit C++

Einführung in die objektorientierte Programmierung mit C++ Prof. Dr. Thomas Klinker FB Elektrotechnik und Informatik 08. 03. 2007 Projekt im 4. Semester Elektrotechnik: Einführung in die objektorientierte Programmierung mit C++ Aufgabe 1: Schreiben Sie ein Programm,

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung

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

Informatik II Übung 10. Pascal Schärli

Informatik II Übung 10. Pascal Schärli Informatik II Übung 0 Pascal Schärli pascscha@student.ethz.ch 09.0.0 Was gibts heute? Best-of Vorlesung: Teile und Herrsche Türme von Hanoi Mergesort O-Notation Vorbesprechung: U0A, - Mergesort U0A Türme

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

Informatik Funktionen

Informatik Funktionen Informatik Seite 1 Funktion Mathematik: Zuordnung Argumentwert(e) => Ergebniswerte Beispiel: f(x,y) = 2*x+y Informatik / Programmierung: Zusammenfassung von Anweisungen die von Argumentwerten abhängen

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften

Mehr