Presentation is loading. Please wait.

Presentation is loading. Please wait.

Diskrete Mathe1 1234567 Diskrete Mathematik I Rekursion Vorlesung 3.

Similar presentations


Presentation on theme: "Diskrete Mathe1 1234567 Diskrete Mathematik I Rekursion Vorlesung 3."— Presentation transcript:

1 Diskrete Mathe1 1234567 Diskrete Mathematik I Rekursion Vorlesung 3

2 Diskrete Mathe1 12345671 Das Prinzip der Rekursion Beispiel: Fakultätsfunktion Übersicht

3 Diskrete Mathe1 12345672 Rekursion im Bild

4 Diskrete Mathe1 1234567 Eine rekursive Definition reduziert ein Problem auf ein kleineres Problem derselben Art. Eine rekursive Funktion setzt eine rekursive Definition in ein Programm um. Das Prinzip der Rekursion 3

5 Diskrete Mathe1 1234567 Beispiel: Fakultätsfunktion Definition: Für n 0 gilt A 1x 4

6 Diskrete Mathe1 1234567 Programmkonstrukte von Java if (Bedingung) Anweisung1; elseAnweisung2; Wenn die Bedingung erfüllt ist, führe Anweisung1 aus, sonst Anweisung 2 int my_function(...) {...... return Integer_Ausdruck;..... } Aufruf: int i = my_function(...); Die Funktion my_function liefert den integer-Ausdruck zurück, der hinter return steht. 5

7 Diskrete Mathe1 1234567 int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } A 9x Fakultät 6

8 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } fak(4) n = 4 7

9 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 != 0 fak(4) 7

10 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 > 0 fak(4) 7

11 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4) 7

12 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)fak(4)=4*fak(3) fak(3) n = 3 7

13 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)fak(4)=4*fak(3) 3 != 0 fak(3) 7

14 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)fak(4)=4*fak(3) 3 > 0 fak(3) 7

15 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)fak(4)=4*fak(3) 3 * fak(2) fak(3) 7

16 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3) 3 * fak(2) fak(3)=3*fak(2) fak(2) 7

17 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3) 3 * fak(2) fak(3)=3*fak(2) 2 * fak(1) fak(2) 7

18 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 2 * fak(1) fak(2) 2 * fak(1) fak(2)=2*fak(1) fak(1) 7

19 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 1 * fak(0) fak(1) 7

20 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) 1 * fak(0) fak(1) 2 * fak(1) fak(1)=1*fak(0) fak(0) 7

21 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) 1 * fak(0) fak(1) 2 * fak(1) fak(1)=1*fak(0) n = 0 fak(0) 7

22 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) 1 * fak(0) fak(1) 2 * fak(1) fak(1)=1*fak(0) 1 fak(0) 7

23 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) 1 * fak(0) fak(1) 2 * fak(1) fak(1)=1*fak(0) fak(0) = 1 7

24 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) 1 * fak(0) fak(1) fak(0) = 1 fak(1)=1*fak(0) 7

25 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) fak(1) = 1*1 7

26 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) 3 * fak(2) fak(2)=2*fak(1) fak(1) = 1 7

27 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) 2 * fak(1) fak(2)=2*fak(1) fak(1) = 1 fak(2)=2*fak(1) 7

28 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) fak(2) = 2*1 7

29 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) 4 * fak(3) fak(3)=3*fak(2) fak(2) = 2 7

30 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) 3 * fak(2) fak(3)=3*fak(2) fak(2) = 2 fak(3)=3*fak(2) 7

31 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) fak(3) = 3*2 7

32 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) 3 * fak(2) fak(3)=3*fak(2) fak(3) = 6 7

33 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) fak(3) = 6 fak(4)=4*fak(3) 7

34 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) 4 * fak(3) fak(4)=4*fak(3) fak(4) = 4*6 fak(4)=4*fak(3) 7

35 Diskrete Mathe1 1234567 A 29x int fak(int n) { if(n==0) return 1; else if (n>0) return n * fak(n-1); else return -1; } 4 * fak(3) fak(4)=4*fak(3) fak(4) = 24 7


Download ppt "Diskrete Mathe1 1234567 Diskrete Mathematik I Rekursion Vorlesung 3."

Similar presentations


Ads by Google