1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen

Slides:



Advertisements
Ähnliche Präsentationen
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Advertisements

Polymorphie (Vielgestaltigkeit)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) public Knoten einfuegenVor(Datenelement dNeu, Datenelement dVergleich){
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Struktogramme IF-ELSE FOR – Schleife
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursion mit Listen: Quicksort
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Effiziente Algorithmen
1.2 Trennung von Struktur und Inhalt
2.4 Rekursion Klassifikation und Beispiele
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Algorithmen und Datenstrukturen Übungsmodul 8
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Eine Vokabelschlange. Schlangen in Anwendungsprogrammen Die Piktogramme von Personen, mit denen wir ursprünglich die Datenstruktur Schlange eingeführt.
Objektorientiertes Modellieren und Programmieren mit Java
Grundlagen der Informationsverarbeitung
2.4 Rekursion Klassifikation und Beispiele
Rekursion – Speicherverwaltung
Zwei Denkansätze zur Klasse Schlange
Der Abschluss einer Schlange
Zufall in Java Zwei Möglichkeiten.
verkettete Strukturen
Allgemeine Befehle für die allgemeine Liste
Graphen.
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Wachstumsprozesse Natürliches Wachstum Größenbeschränktes Wachstum
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
REKURSION + ITERATION.
Thema: Terme und Variablen Heute: Termbeschreibungen
Raphael Fischer Informatik II - Übung 10 Raphael Fischer
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
2. Vererbung und Kapselung
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
Datenstrukturen und Softwareentwicklung
9. Vererbung und Polymorphie
Pflichtteil 2016 Aufgabe 6: Gegeben ist die Gerade
Felder in der Informatik
Das Vektorprodukt Wir definieren erneut eine Multiplikation zwischen zwei Vektoren, das Vektorprodukt, nicht zu verwechseln mit dem Skalarprodukt. Schreibe.
Statische und Nichtstatische Methoden Properties / Eigenschaften
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Grundkurs Informatik 11-13
2.4 Durchlaufen von Bäumen
1. Die rekursive Datenstruktur Liste 1
Heapsort-Algorithmus
Juli 19 Informatik Kurse
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
1.5 Verkettung von Funktionen
 Präsentation transkript:

1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen Ideen zur Bestimmung der Länge einer Liste: Verwalte ein globales Attribut int laenge. Fügt man ein Element zur Liste oder löscht es, wird das Attribut laenge aktualisiert. 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

if(nachfolger !=null){ return nachfolger.laenge() + 1; } else{ 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

Solche Methoden und Funktionen nennt man rekursiv. 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 𝑓𝑎𝑘 𝑛 für alle natürlichen Zahlen ermitteln. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen

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

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

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

Weitere Beispiele für rekursive Funktionen: Berechnung der Potenz 𝒂 𝒏 mit 𝑎>0 und 𝑛∈ ℕ 0 𝑝𝑜𝑡 𝑎,𝑛 = 𝑎⋅𝑝𝑜𝑡 𝑎,𝑛−1 , 𝑤𝑒𝑛𝑛 𝑛≥1 1, 𝑤𝑒𝑛𝑛 𝑛=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

Weitere Beispiele für rekursive Funktionen: Berechnung des größten gemeinsamen Teilers mit dem Euklidschen Algorithmus. 𝑔𝑔𝑇 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

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 3 ja 12 9 6 𝑔𝑔𝑇 𝑎,𝑏 = 𝑔𝑔𝑇 𝑎−𝑏, 𝑏 , 𝑤𝑒𝑛𝑛 𝑎>𝑏 𝑔𝑔𝑇 𝑎, 𝑏−𝑎 , 𝑤𝑒𝑛𝑛 𝑏>𝑎 𝑎, 𝑤𝑒𝑛𝑛 𝑎=𝑏 Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.3 Rekursive Funktionen

Ü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

Übung 3 Eine Bakterienkultur vermehrt sich jede Stunde um 20% Ü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

Ü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

Ü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

Ü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 5 + 2 3 + 2 2 + 2 0 = 101101 2 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