© 2004 Pohlig Informatik Kurse 11-13 1. © 2004 Pohlig Informatik Kurse 11-13 2 Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Imperative Programmierung -Entwicklungswerkzeuge
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
IF-ELSE-IF-Ketten Weiter mit PP..
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Imperative Programmierung Funktionen und Parameter
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Anweisungen und Datentypen
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Thema: Fibonacci-Zahlen
Schleifen mit der Turtle
Bestimmung des ggT zweier Zahlen
Verzweigung.
Informatik Grundkurse mit Java
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
© 2003 Pohlig Informatikgrundkurs (Pohlig-Häberle) 1 5.Was ist eine Syntax? – Ein bierseliger Bayer im Himmel 5.1 Syntax des frohlockenden Bayern Alois.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
Die Klasse String und ihre Methoden
Unterprogramme in JAVA
Optimale Ursprungsgerade
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Natürliches Programmieren
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java Programme nur ein bisschen objektorientiert.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Rekursion – Speicherverwaltung
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Mit der Turtle Java Programmieren
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Mit Java die Turtle steuern
Cäsar-Verschlüsselung
Informatik Kurse
 Präsentation transkript:

© 2004 Pohlig Informatik Kurse

© 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung: Zünder untersucht Fertig! zünderUntersuchen(…)

© 2004 Pohlig Informatik Kurse Was wird ausgegeben #1 public class RekursionDemo{ #2 public static void main(String[] args){ #3 rekursion(5); #4 } #5 private static void rekursion(int a){ #6 a--; #7 System.out.println(a); #8 if (a!=0) rekursion(a); #9 System.out.println(a); #10 } #11 }

© 2004 Pohlig Informatik Kurse Debug-Session

© 2004 Pohlig Informatik Kurse Übung Lassen Sie das Programm im Trace- Modus (F7) abarbeiten und beobachten Sie die Reihenfolge in der die Anweisungen abgearbeitet werden und welche Werte a im Laufe des Ablaufs annehmen

© 2004 Pohlig Informatik Kurse Sequenzdiagramm Der Akteur startet das Programm Der zurückführende Pfeil symbolisiert die Rekursion

© 2004 Pohlig Informatik Kurse ggT - rekursiv ggT(792,75) ggT(75,42) ggT(42,33) ggT(33,9) ggT(9,6) ggT(6,3) „ggT(3,0)“ static int ggT(int a, int b){ if(a==b||b==0) return a; else return ggT(b,a%b); } Schreiben Sie ein Testprogramm für den ggT analog zu RekursionDemo

© 2004 Pohlig Informatik Kurse n! Version 1 n. (n-1). (n-2) import info1.*; public class FakultaetTest{ public static void main(String[] args){ System.out.print("n: "); int n = Console.in.readInt(); System.out.println("n! = "+fak(n)); } static int fak(int n){ int fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; //System.out.println(fakultaet); faktor++; } return fakultaet; } } static int fak(int n){ int fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; //System.out.println(fakultaet); faktor++; } return fakultaet; } faktor in Bedingung Bedingung Fakultaet vor der Zuweisug fakultaet nach der Zuweisung faktor 1true true false

© 2004 Pohlig Informatik Kurse Ausgabe static long fak(int n){ long fakultaet = 1; int faktor = 1; while (faktor <= n){ fakultaet = fakultaet*faktor; System.out.println(fakultaet); faktor++; } return fakultaet; } 21! ist schon wieder nicht mehr berechenbar

© 2004 Pohlig Informatik Kurse n! Version 2 - rekursiv 0! = 1 und n! = n. (n-1)! private static long fakultaet(int n){ if (n==0) return 1; else return n*fakultaet(n-1); }