1. Die rekursive Datenstruktur Liste

Ähnliche Dokumente
1. Die rekursive Datenstruktur Liste

Übungspaket 22 Rekursive Funktionsaufrufe

Informatik für Schüler, Foliensatz 18 Rekursion

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

Algorithmen & Programmierung. Rekursive Funktionen (1)

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion

Informatik Abitur Bayern 2017 / II - Lösung

Aufgaben NF 11; Seite 1

Aufruf des Compilers in der Kommandozeile und Ausführung des Programms:

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

Listen. M. Jakob. 20. September Gymnasium Pegnitz

Aufgabe 1 (12 Punkte)

Kapitel 12: Induktive

JAVA - Methoden - Rekursion

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen und Datenstrukturen (für ET/IT)

Programmierkurs Java

Sequenzen - Listen. Sequenzen Listen: Definition Listen: veränderliche Sequenzen Methoden Attribute Eine Liste von ganzen Zahlen

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik

Algorithmen implementieren. Implementieren von Algorithmen

Folgen und Funktionen in der Mathematik

Abschlussklausur. Lösung

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Klausur: Informatik, am 13. August 2015 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Software Entwicklung 1

FAKULTÄT FÜR INFORMATIK

Basisinformationstechnologie I

Programmiertechnik Übungen zu Klassen & -methoden

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

MB2-PR2, WS10/11 Rekursive Unterprogramme S. 1

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

Selbststudium OOP6 & ALG Programmieren 1 - H1103 Felix Rohrer

ÜBUNGS-BLOCK 7 LÖSUNGEN

JAVA - Rekursion

Übung Algorithmen und Datenstrukturen

4 Programmieren in Java III

SAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen. Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014

1 Modulare Arithmetik

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Grundlagen der Informatik

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

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

Datenstrukturen und Algorithmen

1. Grundlegende Konzepte der Informatik

Einführung in die Informatik I

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

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

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Algorithmen & Datenstrukturen Midterm Test 2

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Informatik II Übung 4 Gruppe 7

Hochschule Niederrhein Einführung in die Programmierung Prof. Dr. Nitsche. Bachelor Informatik WS 2015/16 Blatt 3 Beispiellösung.

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

Klausur "ADP" SS 2012

1.) Zahlensysteme (10 Punkte)

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Klausur "ADP" SS 2013

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

Klassenvariablen, Klassenmethoden

1. Die rekursive Datenstruktur Liste

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue

Selbststudium OOP6 & ALG1 Auftrag

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

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

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Algorithmen und Datenstrukturen

Fakultät IV Elektrotechnik/Informatik

Dabei handelt es sich um eine Tabelle, in der die Zeilen- und Spaltenüberschriften die Knotenbezeichner sind.

Informatik I: Einführung in die Programmierung

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Algorithmen und Datenstrukturen

Rekursive Funktionen (1)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Rekursive Funktionen (1)

Programmieren 1 C Überblick

Stack. Seniorenseminar Michael Pohlig

Dualzahlen

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Binärzahlen. Vorkurs Informatik. Sommersemester Institut für Informatik Heinrich-Heine-Universität Düsseldorf

7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:

Die Zahl ist: (z 2, z 1, z 0 ) (z ) : 7 = 0 Rest z 2

Transkript:

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 das Attribut laenge aktualisiert. 2. Gehe mit einer Schleife durch die Liste, bis der Nachfolger null ist. In der Methode benötigt man ein lokales Attribut int laenge,das bei jedem Schritt um 1 erhöht wird am Ende der Methode ausgegeben wird. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 1

3. Verwende in der Klasse Knoten eine Methode, die an den Nachfolger weitergereicht wird. Auf diese Weise wird kein zusätzliches Attribut benötigt. public int laenge(){ if(nachfolger!=null){ return nachfolger.laenge() + 1; } else{ return 1; } } Beispiel: Liste mit den Knoten k1, k2, k3 und k4. Der Aufruf k1.laenge() liefert: k1.laenge() = k2.laenge() + 1 = k3.laenge() + 1 +1 = k4.laenge() + 1 + 1 + 1 = 1 +1 +1 +1 = 4 In der Klasse Liste ruft man dann anfang.laenge()auf, falls anfang nicht null ist. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 2

In der Klasse Knoten wird die Methode laenge() von einem Objekt derselben Klasse wieder aufgerufen. Man kann auch sagen, die Methode ruft sich selbst wieder auf. Solche Methoden und Funktionen nennt man rekursiv. Beispiel: Fakultät einer natürlichen Zahl!"# 5 = 5! = 5 ' 4 ' 3 ' 2 ' 1 = 5 ' 4! = 5 '!"# 4 Aus!"# 5 lässt sich!"# 4 bestimmen, aus!"# 4 lässt sich!"# 3 bestimmen, u.s.w. Kennt man den Wert von!"# 1 lässt sich!"# 3 für alle natürlichen Zahlen ermitteln. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 3

Eine rekursive Funktion kann man wie folgt formulieren: $!"# $ 1, +,$$ $ > 1!"# $ = & 1, +,$$ $ = 1 Die notwendige Abbruchbedingung!"# 1 = 1 sorgt für das Ende der Rekursion. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 4

Aufrufsequenz für!"# 5 :!"# 5 = 5 &!"# 4 = 5 & 4 &!"# 3 = 5 & 4 & 3 &!"# 2 = 5 & 4 & 3 & 2 &!"# 1 = 5 & 4 & 3 & 2 & 1 Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 5

Eine rekursive Funktionen, kann sich auch mehrmals aufrufen:!"# $ 1 +!"# $ 2,,-$$ $ 2!"# $ = & 1,,-$$ $ = 1 0,,-$$ $ = 0 Man erhält die Fibonacci-Folge 0, 1, 1, 2, 3, 5, 8, 13, 21, Wie lautet die Aufrufsequenz für!"# 6? Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 6

Weitere Beispiele für rekursive Funktionen: Berechnung der Potenz! " mit # > 0 und & N ) # *+, #, & 1, 34&& & 1 *+, #, & = / 1, 34&& & = 0 Aufrufsequenz für *+, 5,3 : *+, 5,3 = 5 *+, 5,2 = 5 5 *+, 5,1 = = 5 5 5 *+, 5,0 = 5 5 5 1 = 125 Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 7

Weitere Beispiele für rekursive Funktionen: Berechnung des größten gemeinsamen Teilers mit dem EuklidschenAlgorithmus.!!" 15, 18 = 3;!!* 5, 75 = 5;!!" 13, 20 = 1 Algorithmus in Pseudocode formuliert: Wiederhole solange bis b = 0: wenn a > b, dann a = a b, sonst b = b a; Ende wiederhole; Gib den Wert von a aus. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 8

Durchführen des Algorithmus für! = 15 und % = 18: Wiederhole solange bis b = 0: wenn a > b, dann a = a b, sonst b = b a; Ende wiederhole; Gib den Wert von a aus. a b a>b? 15 18 nein 15 3 ja 12 3 ja 9 3 ja 6 3 ja 3 3 nein 3 0 ja ''(! %, %,,-..! > % ''(!, % = *''(!, %!,,-.. % >!!,,-..! = % Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 9

Übung 1 Implementiere die rekursive Methode laenge() in der Klasse Knoten und die Methode wortlaengegeben() in der Klasse Wort. Übung 2 Implementiere die rekursiven Methode zur Berechnung der Fakultät, des größten gemeinsamen Teilers und der Potenz einer Zahl. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 10

Übung 3 Eine Bakterienkultur vermehrt sich jede Stunde um 20%. Zu Beginn der Beobachtung besteht die Kultur aus 300 Bakterien. Gib eine Rekursionsvorschrift für die Bestimmung der Bakterienanzahl nach n Stunden an und implementiere diese Funktion. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 11

Übung 4 a) Beschreibe die Funktionalität der Funktion funktion1. Verwende z.b. die Wörter HANNAH, REGAL oder RENTNER. Informiere dich in der Java API oder in einem Handbuch über die verfügbaren Methoden der Klasse String. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 12

Übung 4 b) Implementiere eine weitere rekursiv definierte Methode umdrehen(string s), die ein Wort rückwärts ausgibt. Beispiel: umdrehen( REGAL ) = LAGER c) Verwende die Methode umdrehen um die in Methode aus Aufgabe a) einfacher zu implementieren. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 13

Übung 5* Umwandeln von der Dezimal- in die Binärdarstellung. Eine Zahl wandelt man in das Binärsystem um, indem man sie als Summe von Zweierpotenzen schreibt: 45 = 32 + 8 + 4 + 1 = 2 ) + 2 * + 2 + + 2, = 101101 + Aufgrund folgender Eigenschaft der Zahlen im Binärsystem lässt sich dies sehr elegant rekursiv lösen: Fügt man an eine Binärzahl an die letzte Stelle eine 0 an, so verdoppelt sie ihren Wert. Fügt man an die letzte Stelle eine 1 an, so erhält man den doppelten Wert + 1. Bestätige dies am obigen Beispiel und begründe diese Eigenschaft. Entwickle aus dieser Eigenschaft eine rekursive Funktion, die eine gegebene Zahl aus dem Dezimalsystem in das Binärsystem umwandelt. Die Operationen a / b (ganzzahlige Division ohne Rest) und a % b (a modulo b, d.h. Rest bei der Division a : b) können helfen! Schreibe auch eine rekursive Funktion, die eine gegebene Zahl aus dem Binärsystem in das Dezimalsystem umwandelt. Informatik 11-1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen 14