Inhalt Kapitel 2: Rekursion
|
|
|
- Bella Dunkle
- vor 8 Jahren
- Abrufe
Transkript
1 Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29
2 Beispiele und Definition Rekursion 30 Man kann eine Funktion f : A B durch einen Term definieren, der selbst Aufrufe von f enthält. Beispiele: Fakultät: { 1, falls n = 0 fakultät(n) = n fakultät(n 1), sonst Summe der ersten n natürlichen Zahlen: { 0, falls n=0 summe(n) = n + summe(n 1), sonst Dies bezeichnet man als rekursive Definition. Wir rechnen aus: fakultät(3) = 3 fakultät(2) = 3 2 fakultät(1) = fakultät(0) = = 6
3 Beispiele und Definition Rekursion in SML - fun summe(n) = if n = 0 then 0 else n + summe(n-1); val summe = fn : int -> int - summe(6); val it = 21 : int - fun fakultaet(n) = if n = 0 then 1 else n * fakultaet(n-1); val fakultaet = fn : int -> int - fakultaet(10); val it = : int Alternativ auch mit val : - val rec fakultaet2 = fn n => if n = 0 then 1 else n * fakultaet2(n-1); val fakultaet = fn : int -> int 31 Das rec nicht vergessen!
4 Beispiele und Definition Fibonacci-Zahlen - fun fib(n) = if n <= 1 then 1 else fib(n-1)+fib(n-2); val fib = fn : int -> int - fib(7); val it = 21 : int - fib(8); val it = 34 : int 32 fib(n) liefert die n-te Fibonacci-Zahl F n : 1, 1, 2, 3, 5, 8, 13, 21,... fib(n) liefert z.b. die Hasenpopulation nach n Monaten unter der Annahme, dass Hasen jeden Monat einen Nachkommen haben, dies aber erst ab dem zweiten Lebensmonat. fib(n) liefert auch die Zahl der Möglichkeiten, ein 2 n Zimmer mit 1 2 Kacheln zu fliesen.
5 Beispiele und Definition 3n + 1 rekursiv und in SML - fun g(n) = if n mod 2 = 0 then n div 2 else 3*n+1; val g = fn : int -> int - fun f(n) = if n = 1 then 0 else 1 + f(g(n)); val f = fn : int -> int - f(2); val it = 1 : int - f(3); val it = 7 : int - f(4); val it = 2 : int - f(5); val it = 5 : int - f(27); val it = 111 : int Dies berechnet wieder die Funktion von Folie 9. Diese Funktion heißt nach ihrem Erstbeschreiber Collatz- Funktion (Lothar Collatz , dt. Mathematiker). 33
6 Beispiele und Definition Türme von Hanoi Es gibt drei senkrechte Stäbe. Auf dem ersten liegen n gelochte Scheiben von nach oben hin abnehmender Größe. Man soll den ganzen Stapel auf den dritten Stab transferieren, darf aber immer nur jeweils eine Scheibe entweder nach ganz unten oder auf eine größere legen. Angeblich sind in Hanoi ein paar Mönche seit Urzeiten mit dem Fall n = 64 befasst. Quelle: Wikipedia 34
7 Beispiele und Definition Lösung Für n = 1 kein Problem. Falls man schon weiß, wie es für n 1 geht, dann schafft man mit diesem Rezept die obersten n 1 Scheiben auf den zweiten Stab (die unterste Scheibe fasst man dabei als Boden auf.). Dann legt man die größte nunmehr freie Scheibe auf den dritten Stapel und verschafft unter abermaliger Verwendung der Vorschrift für n 1 die restlichen Scheiben vom mittleren auf den dritten Stapel. 35
8 Beispiele und Definition Lösung in SML Türme werden durch 1,2,3 repräsentiert Befehle durch Paare (i, j): Bewege Scheibe von i nach j Befehlsfolgen werden durch Listen repräsentiert. fun hanoi(n,i,j) = if n =1 then [(i,j)] else hanoi(n-1,6-i-j,j); val hanoi = fn : int * int * int -> (int * int) list - hanoi(3,1,2); val it = [(1,2),(1,3),(2,3),(1,2),(3,1),(3,2),(1,2)] : (int * int) list - hanoi(4,1,2); val it = [(1,3),(1,2),(3,2),(1,3),(2,1),(2,3),(1,3),(1,2), [(i, j)] ist die Einer-Liste mit einzigem Eintrag (infixnotiert) bezeichnet die Verkettung von Listen.
9 Beispiele und Definition Allgemeines Muster einer Rekursion 37 Eine rekursive Definition einer Funktion f : A B hat die Form f (a) = E[f, a] wobei im Ausdruck E[f, a], also dem Funktionsrumpf, sowohl das Argument, als auch die definierte Funktion f selbst vorkommen dürfen. Allerdings darf im Rumpf E[f, a] auf f nur in Form von Aufrufen zugegriffen werden und (bis auf weiteres) dürfen auch nur eine endliche Zahl von Aufrufen getätigt werden. Keine rekursiven { Definitionen sind also: 0, falls Programm für f kürzer als n KB f (n) = (Zugriff 1, sonst nicht in { Form von Aufrufen) 1, falls f (i) = 0 für alle i N f (n) = (unendliche viele 0, sonst Aufrufe)
10 Partialität und Terminierung Partialität 38 Rekursive Definitionen liefern im allgemeinen nur partielle Funktionen: Die Funktionen summe und fakultaet liefern bei negativen Eingaben kein Ergebnis: - summe(~2); C-c C-c Interrupt - Grund: summe( 2) = 2 + summe( 3) = summe( 4) = summe( 5) =.... Gleiches gilt für - fun f(n) = f(n); Die 3n + 1 -Funktion (Folie 5); man weiß nicht, ob sie für alle n definiert ist.
11 Partialität und Terminierung Abstiegsfunktion Um festzustellen, ob eine rekursiv definierte Funktion für ein Argument definiert ist, kann man eine Abstiegsfunktion verwenden. Sei f : A B f (x) = E[f, x] eine rekursive Definition einer Funktion f : A B. AUF) Sei A A eine Teilmenge von A und werde in E[f, x] wobei x A die Funktion f nur für Argumente y A aufgerufen. DEF) Sei für x A der Ausdruck E[f, x] definiert unter der Annahme, dass die getätigten Aufrufe von f alle definiert sind. Dann muss noch nicht unbedingt gelten A D(f ). (Gegenbeispiel: E[f, x] = f (x)) 39
12 Partialität und Terminierung Abstiegsfunktion Sei nun zusätzlich m : A N eine Funktion mit A D(m) und der folgenden Eigenschaft: ABST) Im Rumpf E[f, x] wird f nur für solche y A aufgerufen, für die gilt m(y) < m(x). Dann ist A D(f ). Man bezeichnet so ein m als Abstiegsfunktion. 40
13 Partialität und Terminierung Beispiel Fakultät 41 f : Z Z f (x) = { 1, falls x = 0 x f (x 1), sonst Wir nehmen A = N und m(x) = max(x, 0). In E[f, x] wird f einmal mit Argument x 1 aufgerufen, falls x 0 und gar nicht aufgerufen, falls x = 0. AUF Wenn x A und x 0 (nur dann kommt es zum Aufruf), dann ist x 1 A ; DEF Der Rumpf E[f, x] enthält nur überall definierte Ausdrücke; ABST Wenn x A und x 0, so ist m(x 1) < m(x). Also gilt N D(f ): die durch obiges Schema definierte rekursive Funktion terminiert für alle x N.
14 Partialität und Terminierung Komplizierte Abstiegsfunktion f (i, n, a) = { a, falls i = n f (i + 1, n, a + i), sonst Hier nimmt man A = {i, n, a n N, 0 i n, a Z} und m(i, n, a) = max(n i, 0). f (3, 6, 10) = f (4, 6, 13) = f (5, 6, 17) = f (6, 6, 22) = 22 42
15 Formen der Rekursion Formen der Rekursion Eine rekursive Definition f (x) = E[f, x] heißt: linear, wenn in E[f, x] die Funktion f höchstens einmal aufgerufen wird. endständig, wenn E[f, x] eine Fallunterscheidung ist und jeder Zweig, in dem f aufgerufen wird, von der Form f (G) ist, wobei G keine weiteren Aufrufe von f enthält. mehrfach rekursiv, wenn E[f, x] möglicherweise mehrere Aufrufe von f enthält verschachtelt rekursiv, wenn die Argumente y mit denen f in E[f, x] aufgerufen werden, selbst weitere Aufrufe von f enthalten. 43
16 Formen der Rekursion Lineare Rekursion Im Rumpf findet höchstens ein rekursiver Aufruf statt: Beispiele Summe, Fakultät fun f(x) = if x <= 1 then 1 else if x mod 2 = 0 then 1+f(x div 2) else 1+f(3*x+1) Nur ein Aufruf pro Zweig. Gilt auch. Gegenbeispiele Fibonacci McCarthy s 91-Funktion fun M(n) = if n>100 then n-10 else M(M(n+11)) 44
17 Formen der Rekursion Endständige Rekursion Endständige Rekursion Lineare Rekursion + Zweige der Fallunterscheidung sind rekursive Aufrufe, deren Ergebnisse nicht weiterverarbeitet werden. Beispiele fun f1(i,n,a) = if i=n then a else f1(i+1,n,a+i) fun f2(n,a) = if n<=1 then a else if n mod 2 = 0 then f2(n d Gegenbeispiele Alle nicht-linearen Rekursionen summe, fakultaet (Ergebnis der Aufrufe wird weiterverarbeitet durch Addition / Multiplikation von n) 45
18 Formen der Rekursion Endständige Rekursion Endständige Versionen von Summe und Fakultät Endständige Rekursionen können sehr effizient abgearbeitet werden. Grund: Im Substitutionsmodell entstehen keine großen Zwischenergebnisse. Beispiel f2(11, 0) = f2(34, 1) = f2(17, 2) = f2(52, 3) = f2(26, 4) = f2(13, 5) =... Viele Rekursionen lassen sich in endständige Form bringen, z.b. ist f1 eine endständige Version von summe fun f1(i,n,a) = if i=n then a else f1(i+1,n,a+i) 46 f1(0, 5, 0) = f1(1, 5, 0) = f1(2, 5, 1) = f1(3, 5, 2) = f1(4, 5, 5) = f1(5, 5, 10) = 10
19 Formen der Rekursion Endständige Rekursion Endständige Rekursion und Iteration Eine endständige Rekursion entspricht im wesentlichen einer While-Schleife: fun f1(i,n,a) = if i=n then a else f1(i+1,n,a+i) entspricht: int f1(int i, int n, int a) { while (!(i=n)) { a = a+i; i = i+1; } return a; } 47
20 Einbettung Einbettung Häufig muss für eine rekursive Lösung die Problemstellung leicht verallgemeinert werden. Endständig rekursive Version der Summe: f1(i,n,a) berechnet a + n 1 j=i j. Versuch eines rekursiven Primzahltest: fun istprim(n) = if n<=1 then false else if n = 2 then true else...??? Eine Zahl n ist prim, wenn sie keine Teiler im Bereich 1... n 1 hat. Wir verallgemeinern das auf den Bereich i... n 1 48
21 Einbettung keineteiler fun keineteiler(i,n) = if i=n then true else n mod i > 0 andalso keineteiler(i+1,n); fun istprim(n) = if n<=1 then false else if n = 2 then true else keineteiler(2,n) fun naechsteprimzahl(n) = if istprim(n) then n else naechsteprim Z.B.: naechsteprimzahl( )= Es gibt wesentlich effizientere Methoden um auf Prim-heit zu testen. 49
22 Einbettung Endständige Rekursion durch Einbettung Rekursives Programm zur Potenzierung: fun potenz(x,n) = if n=0 then 1.0 else x*potenz(x,n-1) Endrekursive Version: fun potenz2(x,n,a) = if n=0 then a else potenz2(x,n-1,x*a) potenz2(x, n, a) berechnet x n a. Man ruft dann mit a = 1 auf. 50
23 Einbettung Schnelle Potenzierung fun square(x:real) = x*x fun potenz(x,n) = if n=0 then 1.0 else if n mod 2 = 0 then square(potenz(x,n div 2)) else square(potenz(x,n div 2))*x Beweis: x 2k = (x k ) 2 und x 2k+1 = (x k ) 2 x. Schafft es jemand, eine endrekursive Version davon anzugeben? 51
Einführung in die Funktionale Programmierung mit Haskell
Einführung in die Funktionale Programmierung mit Haskell Rekursion LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 25. April 2013 Planung Achtung: Nächste
Programmierung und Modellierung mit Haskell
Rekursion Terminierung Rekursionsarten Induktion Programmierung und Modellierung mit Haskell Rekursion, Terminierung, Induktion Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik,
Rekursive Funktionen
Rekursive Funktionen Man kann eine Funktion f : A B durch einen Term definieren, der selbst Aufrufe von f enthält. Beispiel: fakultät = function(n)if n = 0 then 1 else n fakultät(n 1) Dies bezeichnet man
Inhalt Kapitel 3: Induktion und Termination
Inhalt Kapitel 3: Induktion und Termination 1 Wohlfundierte Relationen Ackermannfunktion 2 Untere Schranke für Türme von Hanoi Weitere Beispiele 52 Wohlfundierte Relationen Wohlfundierte Relationen Definition
Programmierung und Modellierung
Programmierung und Modellierung Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 2. Rekursive Funktionen und Induktion 1. Dateien laden, Kommentare und Fallunterscheidungen 2. Rekursive Funktionen
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
Einführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
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
Informatik für Schüler, Foliensatz 18 Rekursion
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. März 2009 1/10 Informatik für Schüler, Foliensatz 18 Rekursion Prof. G. Kemnitz Institut für Informatik, Technische Universität
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
Informatik I: Einführung in die Programmierung
Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public
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
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
( )= 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
Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 1 (Kapitel 1)
Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 1 (Kapitel 1) Hinweis: Dieses Übungsblatt enthält
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
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,
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
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
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
15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen
453 15. Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen Mathematische Rekursion 454 Viele mathematische Funktionen sind sehr natürlich rekursiv
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
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
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
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 -
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
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
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
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?
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.
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?
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
Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9)
Fachrichtung 6. Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung Programmierung (Wintersemester 5/6) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9) Hinweis: Dieses
C++ - Kontrollstrukturen Teil 2
C++ - Kontrollstrukturen Teil 2 Reiner Nitsch 8417 [email protected] Schleife und Verzweigung kombiniert SV initialisieren while(b1) if(b2) w f V1 V2 SV Richtung Ziel verändern Wichtiger Baustein vieler
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
Stack. Seniorenseminar Michael Pohlig
Stack Seniorenseminar 21.06.2013 Michael Pohlig ([email protected]) Übersicht 1. Axiomatik eins Kellers und seine Software- Realisierung 2. Bedeutung der Rekursion in der Mathematik 3. Rekursive Programmierung.
Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte)
Matrikelnummer: 1 Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte) Kreuzen Sie an, ob die folgenden Aussagen richtig oder falsch sind. Bewertung: keine Antwort: 0 Punkte richtige Antwort: +0.5 Punkte falsche
Fallstudie: Nim Spiel
Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod
Einführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag,
Lösungen zum Übungsblatt 3: Softwareentwicklung I (WS 2006/07)
Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J.O. Blech Dipl.-Inform. M.J. Gawkowski Dipl.-Inform. N. Rauch Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungen zum Übungsblatt
Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin
Crashkurs Haskell Mentoring WiSe 2016/17 Anja Wolffgramm Freie Universität Berlin 02/11/2016 , Inhalt Kommandozeile Haskell installieren & starten Ein 1. Haskell-Programm Funktionsdefinition Primitive
Grundlagen der Programmierung (Vorlesung 15)
Grundlagen der Programmierung (Vorlesung 15) Ralf Möller, FH-Wedel Vorige Vorlesung Blöcke, Funktionen Auswertestrategien Inhalt dieser Vorlesung Prozeduren Rekursion Lernziele Grundlagen der systematischen
Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 [email protected] 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
Programmiertechnik Methoden, Teil 2
Programmiertechnik Methoden, Teil 2 Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Rekursion Oliver Haase Hochschule Konstanz 2 Definition Was ist Rekursion? Allgemein: Rekursion ist die Definition
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
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
Theoretische Informatik SS 03 Übung 5
Theoretische Informatik SS 03 Übung 5 Aufgabe 1 Im Buch von Schöning ist auf S. 106-108 beschrieben, wie eine Turing-Maschine durch ein GOTO-Programm simuliert werden kann. Zeigen Sie, wie dabei die Anweisungen
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!
2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -
2. Imperative Programmierung und Berechenbarkeit - Registermaschinen - 2.1 Definition 2.2 Loop-Programme 2.3 While Programme 2.4 While Programme und rekursive Funktionen Im Wesentlichen: Tafel! Maschinenmodell
Programmieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man umgangssprachlich,
Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr
Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2013/2014 Universität Freiburg Institut für Informatik Übungsblatt 3
Induktion und Rekursion
Induktion und Rekursion Induktion und Rekursion Sommersemester 2018 Ronja Düffel 16. März 2018 Induktion und Rekursion > Mathematische Beweistechniken > Vollständige Induktion Der kleine Gauß Induktion
LOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
Einführung in die Informatik I
Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider
Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)
WS 2015/16 Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_15
Semantik von Programmiersprachen SS 2017
Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich [email protected] [email protected] Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen
Klausur Programmierung WS 2002/03
Klausur Programmierung WS 2002/03 Prof. Dr. Gert Smolka, Dipl. Inf. Thorsten Brunklaus 14. Dezember 2002 Leo Schlau 45 Vor- und Nachname Sitz-Nr. 4711 007 Matrikelnummer Code Bitte öffnen Sie das Klausurheft
Ideen und Konzepte der Informatik
Ideen und Konzepte der Informatik Programme und Algorithmen Antonios Antoniadis 23. Oktober 2017 Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert
2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.
2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int
Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I µ-rekursive Funktionen WS 2012/2013 Primitiv-rekursive Funktionen Jede primitiv-rekursive Funktion ist Loop-berechenbar. Das bedeutet, dass jede PR-Funktion in der Loop-Programmiersprache formuliert
Fallstudie: Nim Spiel
Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod
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
Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt
Isomorphismus Definition Gruppen-Isomorphismus Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt 1 f ist bijektiv f (u + v) = f (u) f (v) für alle u, v G, die
Technische Informatik I Übung 3: Assembler
Technische Informatik I Übung 3: Assembler Roman Trüb Computer Engineering Group, ETH Zürich 1 Lernziele Übung 3 Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Assembler Codeanalyse Aufgabe 2
Collatz-Folge. falls a i ungerade.
14 Klausurtraining Heute gibt s nichts Neues mehr wir machen nochmal einen Streifzug durch die behandelten Themen unter besonderer Berücksichtigung von Aufgaben in der Art, wie sie in Klausuraufgaben vorzukommen
Induktion und Rekursion
Mathematische Beweistechniken Vorkurs Informatik SoSe13 10. April 013 Mathematische Beweistechniken Ziel Mathematische Beweistechniken Ziel beweise, dass eine Aussage A(n) für alle n N gilt. Beispiel Für
C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
Ü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
Die Schnittstelle Comparable
Die Schnittstelle Comparable Wir wollen Such- und Sortieroperationen für beliebige Objekte definieren. Dazu verwenden wir die vordefinierte Schnittstelle Comparable: public interface Comparable { int compareto(object
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
Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
Ü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
Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger
Grundlagen der Programmierung 2 (1.B)
Grundlagen der Programmierung 2 (1.B) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 27. April 2012 Beispiel: Aufrufhierarchie quadrat x = x*x quadratsumme x y = (quadrat
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
