Rekursive Funktionen (Fakultät)

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Imperative Programmierung -Entwicklungswerkzeuge
Verteilte Software - Java - Prozedurale Programmierung 1
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
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,
Konstruktoren.
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
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.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
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);
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.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Verzweigung.
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,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2.4 Rekursion Klassifikation und Beispiele
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Kapitel 2: Grundelemente von Programmiersprachen
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Natürliches Programmieren
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Java Programme nur ein bisschen objektorientiert.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
2.4 Rekursion Klassifikation und Beispiele
Rekursion – Speicherverwaltung
Methoden - rekursiv.
Mit der Turtle Java Programmieren
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Cäsar-Verschlüsselung
Informatik Kurse
 Präsentation transkript:

Rekursive Funktionen (Fakultät) >>>def fakt (n): if n==0: return 1 else: return fakt(n-1)*n >>> print fak(20) 2432902008176640000 class Fakultaet { static long fak(long n) { if (n <= 0) return 1; else return n * fak(n-1); } public static void main(String[] args) { System.out.println(20 + "! = " + fak(20)); % fakt fakt(0,1). fakt(N,F):- N1 is N-1, fakt(N1,L), F is N*L. % Nach Konsultation der obigen WB antwortet das System auf die Anfrage: ?- fakt(20,F). F = 2432902008176640000

Rekursive Funktionen (ggT) class Teiler { static int ggT(int m,n) { if (m==n) return m; else if (m>n) return ggT(m-n,n); else return ggT(m,n-m); } public static void main(String[] args) { System.out.println( „ggT(24,3) = "+ggT(24,3); >>>def ggT(m,n): if m==n: print m elif m > n: return ggT(m-n,n) else: return ggT (m,n-m) >>>print ggT(24,3) 8 % ggT ggT(M,M,M). ggT(M,N,G):-M>N, H is M-N,ggT(H,N,G). ggT(M,N,G):-H1 is N-M, ggT(M,H1,G). ?- ggT(24,3,G). G = 8

ggT Rekursionsbaum

Rekursive Funktionen (Fibonacci) class Fibonacci { static int fibo(int n) { if (n <2) return 1; else return fibo(n-2)+fibo(n-1); } public static void main(String[] args) { System.out.println(„fibo(6) = " + fibo(6)); >>>def fibo (n): if n < 2: return 1 else: return fibo(n-1) + fibo(n-2) >>>print fibo(6) 13 % fibo fibo(0,1). fibo(1,1). fibo(N,M):-N1 is N-1, N2 is N-2,fibo(N1,M1),fibo(N2,M2),M is M1+M2. ? Fibo(6,M). M = 13

Fibonacci Rekursionsbaum

Rekursive Funktionen (Ulam) int n=17; void ulam() { if (n>1){ if (n%2==0) n=n/2; else n=3*n+1; ulam(); } def ulam(n): while n>1: if n%2 == 0: n=n/2 return n else: n=3*n+1 return ulam(n) ulam(X):- X==1. ulam(X):- X1 is (X mod 2), X1==0, Z is X/2,write(Z),write(' '),ulam(Z). ulam(X):- Z1 is 3*X+1,write(Z1), write(' '),ulam(Z1).

Rekursive Funktionen (McCarthy) class macCarthy { static int mcCarthy (int n) { if (n < 100) return n-10; else return mcCarthy(mcCarthy(n+11)); } public static void main (String[] args) { System.out.println („mcCarthy(7)=“ +mcCarthy(7)); >>>def mcCarthy (n): if n>100: return n-10 else: return mcCarthy(mcCarthy (n+11)) >>>print mcCarthy(88) 91 mcCarthy(X,Y):- X>100, Y is X-10. mcCarthy(X,Y):- X1 is X+11, mcCarthy(X1,Y1), mcCarthy(Y1,Y).

McCarthy Rekursionsbaum

Rekursive Funktionen (Potenz) class potenz { static int pot (int x, int n) { if (n==0) return 1; else return x*(pot(x,n-1)); } public static void main(String[] args) { System.out.println(„7³=“ + pot(7,3)); >>> def pot (x,n): if n == 0: return 1 else: return x* (pot (x,n-1)) >>>print pot(7,3) 343 pot(X,0,1). Pot(X,N,P):- N>0, N1 is N-1, pot(X,N1,P1), P is X * P1.

Rekursive Funktionen (Summe) public class rekursion { int summe(int n){ if (n==1) return 1; else return summe(n -1) + n; } public static void main(String[] args) { System.out.println(„sum(4)=„summe(4)); >>> summe(n, s=0): if n == 1: return 1 return summe(n-1,s+n) >>> print summe(4) 10 summe(1,1). summe(N,S):- N1 is N-1, summe(N1,S1), S is S1 + N. ?- summe(4,S) S = 10

Rekursive Funktionen (Quadratsumme) public class rekursion { int qsumme(int n){ if (n==1) return 1; else return (n*n) + qsumme(n-1); } public static void main(String[] args) { System.out.println(„qsum(4)=„qsumme(4)); >>>def quadr_sum(n,qs=0): if n == 1: return 1 qs += n**2 + quadr_sum(n-1,qs) return qs >>> print quadr_sum(4) 30 qsumme(1,1). qsumme(N,Q):- N1 is N - 1, qsumme(N1,Q1), Q is Q1 + (N*N). ?- qsumme(4,Q). Q = 30

Rekursive Funktionen (Binomialkoeffizient) >>>def binomi(n,k): if k == 0 or n == k: return 1 else: return binomi(n-1,k-1)+ binomi(n-1,k) >>> print binomi(5,2) 10 public class Binomi { static long binomi(int n, int k) { if (k == 0 || n == k) return 1; else return binomi(n-1, k-1) + binomi(n-1,k);} public static void main(String[] args) { System.out.println("Binomialkoeffizient von 5 über 2 =" + binomi(5,2)); } } % Binomialkoeffizient binomi(_,0,1). binomi(N,N,1). binomi(N,K,B):- N1 is N-1, K1 is K-1, binomi(N1,K1,B1), binomi(N1,K,B2), B is B1+B2. ? binomi(5,2,B). B = 10