JAVA - Rekursion

Ähnliche Dokumente
JAVA - Methoden - Rekursion

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

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

4 Rekursionen. 4.1 Erstes Beispiel

Rekursive Funktionen

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

Vorkurs Informatik WiSe 17/18

1. Die rekursive Datenstruktur Liste

Aufrufe von Objektmethoden

II.3.1 Rekursive Algorithmen - 1 -

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Rekursive Funktionen

11. Rekursion, Komplexität von Algorithmen

Grundlagen der Programmierung

Programmieren 1 C Überblick

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

Speicher und Adressraum

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

C++ - Kontrollstrukturen Teil 2

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

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

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

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

6 Speicherorganisation

Praktische Informatik I Der Imperative Kern Rekursive Funktionen

Vorkurs Informatik WiSe 16/17

Institut fu r Informatik

Software Entwicklung 1

Informatik für Schüler, Foliensatz 18 Rekursion

Algorithmen und Datenstrukturen 04

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

Einstieg in die Informatik mit Java

Rekursive Funktionen und ihre programmtechnische Umsetzung

Informatik I: Einführung in die Programmierung

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

Klassenvariablen, Klassenmethoden

Einführung in die Informatik I

Rekursive Funktionen (1)

Rekursive Funktionen (1)

Lösungsvorschlag Serie 2 Rekursion

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

Aufgabenblatt: Methoden - rekursiv

Komplexität von Algorithmen

Numerische Verfahren und Grundlagen der Analysis

Datenstrukturen und Algorithmen

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

Einstieg in die Informatik mit Java

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Algorithmen und Datenstrukturen

Komplexität von Algorithmen

Inhalt Kapitel 2: Rekursion

Einführung in die Programmierung

Informatik II Übung 5

Algorithmen und Datenstrukturen

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

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

Mathematische Rekursion

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

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

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 7. Entrekursivierung

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

11. Rekursion, Komplexität von Algorithmen

Datenstrukturen und Algorithmen

3. rekursive Definition einer Folge

Einstieg in die Informatik mit Java

Übungspaket 22 Rekursive Funktionsaufrufe

Informatik II Übung 10. Pascal Schärli

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

4 Programmieren in Java III

12. Rekursion Grundlagen der Programmierung 1 (Java)

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

Einführung in das Programmieren Probeklausur Lösungen

Algorithmen & Programmierung. Rekursive Funktionen (1)

Präzedenz von Operatoren

Folgen und Funktionen in der Mathematik

Beispiel 1: Fakultät

Programmiertechnik Methoden, Teil 2

Fakultät IV Elektrotechnik/Informatik

Algorithmen und Datenstrukturen 04

Induktion und Rekursion

Algorithmen und Datenstrukturen

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

Grundlagen der Informatik Algorithmen und Komplexität

Transkript:

Ü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 heißt rekursiv, wenn es sich selbst als Teil enthält. ist ein alltägliches Phänomen: - Rückkopplung Mikrofon/Lautsprecher - Blick mit einem Spiegel in den Spiegel Übungen Informatik 1 Folie 3

Beispiel: Eine kleine Wunsch-Funktion Auf dem Weg durch den Wald begegnet uns eine Fee. Sie spricht zu uns:»du hast drei Wünsche frei«. static void fee() { wunsch(); wunsch(); fee(); } Durch den dauernden Aufruf der fee()-funktion haben wir unendlich viele Wünsche frei. ist also das Aufrufen der eigenen Methode, in der wir uns befinden. direkte Dies kann auch über einen Umweg funktionieren. indirekte. Übungen Informatik 1 Folie 4

Abbruchbedingung einer Eine Endlos-: static void runter( int n ) { System.out.print( n + ", " ); runter( n - 1 ); } Aufruf von runter(10) folgende Ausgabe: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2,... ist prinzipiell etwas Unendliches. Abhilfe: 1. Abbruchbedingung wie bei Schleifen 2. und dann keinen saufruf mehr starten. Die Abbruchbedingung einer static void runter( int n ) { if ( n == 0 ) // sende return; System.out.print( n + ", " ); runter( n - 1 ); } Die runter()-methode ruft jetzt nur noch so lange runter(n-1) auf, wie n ungleich Null ist. Übungen Informatik 1 Folie 5

Unterschiedliche sformen en, bei denen hinter dem Methodenaufruf keine Anweisungen stehen heißen Endrekursion. static void runter1( int n ){ if ( n == 0 ) // sende return; System.out.print( n + ", " ); runter1( n - 1 ); } Ausgabe von runter1(10) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 en, bei denen hinter dem Methodenaufruf Anweisungen stehen (schwieriger zu verstehen): static void runter2( int n ){ if ( n == 0 ) // sende return; runter2( n - 1 ); System.out.print( n + ", " ); } runter1() gibt zuerst die Zahl n aus und ruft anschließend rekursiv runter1() auf. runter2() steigt jedoch erst immer tiefer ab, und die muß beendet sein, bis es zum ersten print() kommt. Ausgabe von runter2(10) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Der Trick bei der Sache ist nun darin zu sehen, dass jede Methode ihre eigene lokale Variable besitzt. Übungen Informatik 1 Folie 6

Ausblick Ausblick Der niederländische Maler Maurits Cornelis Escher (1898-1972) machte die auch in Bildern berühmt. Seiten mit Bildern und Vita finden sich zum Beispiel unter folgenden Webadressen: http://www.worldofescher.com/ http://www.etropolis.com/escher/ http://www.iproject.com/escher/escher100.html Übungen Informatik 1 Folie 7

Fakultät Als Fakultät einer Zahl n bezeichnet man das Produkt aller Zahlen von 1 bis n. Schriftlich kennzeichnet man eine Fakultät, indem man ein Ausrufezeichen hinter die Zahl schreibt: 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720 Wieviele Möglichkeiten gibt es für eine sechsköpfige Familie an einem Esstisch mit sechs Stühlen Platz zu nehmen? Wie ist es, wenn ein Gast dazukommt? Übungen Informatik 1 Folie 8

Fibonacci-Reihe Fibonnacci war ein berühmter Mathematiker des 12. Jahhrhunderts. Er führte u.a. die indische Ziffernschreibweise (die arabische Zahlen) in Europa ein. Fibonacci entwickelte auch eine spezielle Zahlenreihe 1, 1, 2, 3, 5, 8, 13,..., die nach dem folgenden Vorschrift generiert wird: - Die beiden ersten Zahlen sind "1" - die nachfolgenden sind die Summe der zwei jeweils vorangehenden. Fibonacci-Reihe n F(n) 0 1 2 3 4 5 6 7 0 1 1 2 3 5 8 13 Übungen Informatik 1 Folie 9

Fibonacci-Reihe Diese Zahlenreihe hat in der Natur eine große Bedeutung: Kaninchenzucht Die Zucht beginnt mit einem jungen Kaninchenweibchen. Wie lange dauert es, bis sie sich auf 300 Weibchen vermehrt haben? Annahmen: - bis zur Geschlechtsreife dauert es 6 Wochen - die Tragzeit beträgt 6 Wochen - pro Wurf wird ein Weibchen geboren - es sterben keine Kaninchen Die Fibonacci-Reihe beschreibt die Anzahl Weibchen im 6 Wochen Abstand. Goldener Schnitt ist das Zahlenverhältnis (1 + Wurzel(5))/2, ca. 1.618. Das Verhältnis zweier aufeinanderfolgender Fibonacci-Zahlen nähert sich immer mehr dem Goldenen Schnitt. Übungen Informatik 1 Folie 10

Fibonacci-Reihe sbaum zu der Fibonaccifolge: n F(n) 0 1 2 3 4 5 6 7 0 1 1 2 3 5 8 13 Rekusionstiefe von fibo(n)=n Zahl der Rekursiven Aufrufe wächst exponentiell (~ Türme von Hanoi) hier: mehrfach-berechnung derselben Teilproblemen: unbedingt vermeiden! Fibonacci iterativ berechnen!! Übungen Informatik 1 Folie 11

Beispiel für Türme von Hanoi n Scheiben mit abnehmender Größe liegen auf dem Startort A. Sie sollen in derselben Reihenfolge auf Zielort B zu liegen kommen. Die Regeln für den Transport lauten: 1.) Jede Scheibe muss einzeln transportiert werden. 2.) Es darf nie eine größere Scheibe auf einer kleineren liegen. 3.) Es darf ein Hilfsort B zum Zwischenlagern verwendet werden. Die Ausgabe soll die einzelnen Züge dokumentieren und den Algorithmus veranschaulichen. Übungen Informatik 1 Folie 12

Wann? - wenn das Problem rekursiv definiert ist - Aufwand bei rek. Aufrufen wird durch sbaum (Aufrufb.) bestimmt: - stiefe möglichst klein: Höhe des sbaumes + 1 (max. Größe des Run-Time-Stacks, Größe des benötigten Speicherbedarfs) - Laufzeit möglichst klein: Gesamtzahl der Knoten im sbaum (= Anzahl aller rekursiven Aufrufe) Klassische Beispiele für in mathem. Definitionen: Binäre Bäume Fakultät GGT nach Euklid: stiefe = 1+2log (max{n,m}) akzeptabel sbaum ist eine Liste Hinweis auf iterativen Algorithmus Fibonacci-Zahlen: Rekusionstiefe von fibo(n)=n Zahl der Rekursiven Aufrufe wächst exponentiell (~ Türme von Hanoi) Türme von Hanoi Ackermann Funktion Für große Zahlen übersteigt die Funktion schnell alle Berechnungsmöglichkeiten. Ulams Funktion Übungen Informatik 1 Folie 13

Quellen Linkliste für weitere Informationen: http://autolisp.mapcar.net/rekursion.html) http://www.galileocomputing.de/openbook/javainsel3/ javainsel_020007.htm#rxxxjava020007588rekursivefunktionen Übungen Informatik 1 Folie 14