Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Methoden - rekursiv.

Ähnliche Präsentationen


Präsentation zum Thema: "Methoden - rekursiv."—  Präsentation transkript:

1 Methoden - rekursiv

2 Definition von Rekursion
Ein Objekt heißt rekursiv, wenn es sich selbst als Teil enthält:

3 Beispiel: Die Fee Auf dem Weg durch den Wald begegnet uns eine Fee. Sie spricht zu uns: »Du hast drei Wünsche frei«…. static void feeBegegnetUns() { wunsch(); } feeBegegnetUns();

4 Mathematische Definition:
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Beispiel: Fakultät I n=0 n! = n*(n-1)! n≥1 Mathematische Definition: n! = Beispiel: 7! = 1*2*3*4*5*6*7 n = 0 => 0!=1 n! = n * (n-1)! Rekursive Definition:

5 Kodierung(nicht-rekursiv):
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fakultät II double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung(nicht-rekursiv): double faku(int n) { double res=1 ; for(int i=1; i<=n; i++) res = res*i ; return res; }

6 Beispiel: Fakultät III
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fakultät III double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung(rekursiv): Basis Fall double faku(int n) { if(n==0) return 1; return faku(n-1)*n ; } n=0 n! = n*(n-1)! n≥1 n! = Rekursiver Fall

7 Beispiel: Fakultät IV Visualisierung I: n=2 double faku(int n) {
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fakultät IV double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Visualisierung I: n=2 double faku(int n) { if(n==0) return 1; return n*faku(n-1) ; } double faku(int n) { if(n==0) return 1; return n*faku(n-1) ; } double faku(int n) { if(n==0) return 1; return n*faku(n-1) ; } n=1 n=0 faku(0)=1 faku(1)=1 faku(2)=2

8 Beispiel: Fakultät V Visualisierung II:
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fakultät V double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Visualisierung II:

9 Beispiel: Fakultät VI Visualisierung III: faku(3)= 3*faku(2) 2*faku(1)
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fakultät VI double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Visualisierung III: faku(3)= 3*faku(2) 2*faku(1) 1*faku(0) Basis Fall 1 1*1=1 2*1=2 6= 3*2=6

10 Beispiel: Fibonacci-Zahlen I
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fibonacci-Zahlen I double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Leonardo Fibonacci(1202): Wachstum einer Kaninchenpopulation Griechen, Inder: Bereits im Altertum bekannt Goldener Schnitt: Quotient zweier Folgenglieder nähert sich dem Goldenen Schnitt(1,618033…) Chartanalyse: Retracement

11 Beispiel: Fibonacci-Zahlen II
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fibonacci-Zahlen II double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung: Basis Fall public static double fibo(int n) { if (n<=1) return n; return fibo(n-1) + fibo(n-2) ; } a0=0; a1=1; an+2=an+1+an n≥2 gleichwertig: an=an-1+an-2 n≥2 Rekursiver Fall

12 Beispiel: Fibonacci-Zahlen III
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fibonacci-Zahlen III double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Simulation:

13 Beispiel: Fibonacci-Zahlen in Brainloller
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fibonacci-Zahlen in Brainloller double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung: > <<<<.-.>.<.+ >>>>> [->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]

14 Beispiel: Fibonacci-Zahlen in Scratch
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Fibonacci-Zahlen in Scratch double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung: set f1 to 1 set f2 to 1 set str to f1 repeat 15 set f3 to (f1 + f2) set f1 to f2 set f2 to f3 set str to join (str (join (,) f1)) say join (str (...))

15 Beispiel: Summe von den ersten n Zahlen
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Summe von den ersten n Zahlen double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung: Basis Fall public static double summeN(int n) { if (n==0) return 0 ; return n+ summeN(n-1); } S0=0; n=0 Sn=n+Sn-1 n≥1 Rekursiver Fall

16 Beispiel: Potenz einer Zahl mit fester Basis
7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Beispiel: Potenz einer Zahl mit fester Basis double faku(int n) { double fak=1 ; for(int i=1; i<n; i++) fak = fak*(i+1) ; return fak; } Kodierung: public static double PotenzN (double a,int n) { if (n==0) return 1 ; return a* PotenzN (a,n-1); } Basis Fall P0=1; n=0 Pn=a*Pn-1 n≥1 Rekursiver Fall


Herunterladen ppt "Methoden - rekursiv."

Ähnliche Präsentationen


Google-Anzeigen