Präsentationsfolien (PDF)
Präsentationsfolien (PDF) Präsentationsfolien (PDF)
8.6 Rekursionsformen • Verschränkte Rekursion: Methoden rufen sich zyklisch gegenseitig auf. (Einfacher Fall: Methodendeklaration f enthält einen Aufruf der Methode g, die wiederum einen Aufruf von f enthält.) • Beispiel: ist eine Zahl n gerade (oder ungerade)? boolean isEven(int n) { if (n == 0) { return true; } else if (n == 1) { return false; } else { return isOdd(n-1); } } boolean isOdd(int n) { if (n == 0) { return false; } else if (n == 1) { return true; } else { return isEven(n-1); } } Algorithmen und Datenstrukturen Philippsen/Stamminger/Pflaum/Riehle WS 2010/2011 Folie 08-48
8.6 Rekursionsformen • Verschränkte Rekursion: Methoden rufen sich zyklisch gegenseitig auf. (Einfacher Fall: Methodendeklaration f enthält einen Aufruf der Methode g, die wiederum einen Aufruf von f enthält.) • Beispiel: binäre Quersumme von n Hat die Binärdarstellung von n eine ungerade Zahl von Einsen? boolean qsumIs1(int n) { if (n == 0) return false; // Quersumme ist nicht 1 else if ((n % 2) == 0) return qsumIs1(n / 2); // wenn gerade, dann muss binäre // Quersumme der Hälfte 1 sein. else return qsumIs0(n / 2); // wenn ungerade, dann muss bin. // Quersumme der Hälfte 0 sein. // Achtung / ist Div ohne Rest. } boolean qsumIs0(int n) { // analog } Algorithmen und Datenstrukturen Philippsen/Stamminger/Pflaum/Riehle WS 2010/2011 Folie 08-49
- Seite 1 und 2: Algorithmen und Datenstrukturen 8.
- Seite 3 und 4: 8. Rekursion 8.1 Einführung der Re
- Seite 5 und 6: 8.1 Einführung der Rekursion Eine
- Seite 7 und 8: 8.1 Einführung der Rekursion Zentr
- Seite 9 und 10: 8.1 Einführung der Rekursion Java-
- Seite 11 und 12: 8.1 Einführung der Rekursion Rekur
- Seite 13 und 14: 8.1 Einführung der Rekursion Termi
- Seite 15 und 16: 8.1 Einführung der Rekursion Termi
- Seite 17 und 18: 8.2 Türme von Hanoi Problemspezifi
- Seite 19 und 20: 8.2 Türme von Hanoi Lösungsansatz
- Seite 21 und 22: 8.2 Türme von Hanoi Java-Code void
- Seite 23 und 24: 8.2 Türme von Hanoi • Korrekthei
- Seite 25 und 26: 8.3 Fibonacci-Zahlen • Ergebnis:
- Seite 27 und 28: 8.3 Fibonacci-Zahlen • Fibonacci-
- Seite 29 und 30: 8.3 Fibonacci-Zahlen Durchreichen v
- Seite 31 und 32: 8.3 Fibonacci-Zahlen Analyse der Re
- Seite 33 und 34: 8.4 Skyline-Problem Teile-und-Herr
- Seite 35 und 36: 8.4 Skyline-Problem Teile-und-Herr
- Seite 37 und 38: 8.4 Skyline-Problem Teile-und-Herr
- Seite 39 und 40: 8.4 Skyline-Problem Teile-und-Herr
- Seite 41 und 42: 8.5 Hinführung: Blasensortierung (
- Seite 43 und 44: 8.5 Sortieren durch Mischen („mer
- Seite 45 und 46: 8.5 Sortieren durch Mischen („mer
- Seite 47: 8.6 Rekursionsformen • Verschacht
- Seite 51 und 52: 8.6 Rekursionsformen • Fakultäts
8.6 Rekursionsformen<br />
• Verschränkte Rekursion: Methoden rufen sich zyklisch<br />
gegenseitig auf. (Einfacher Fall: Methodendeklaration f enthält einen<br />
Aufruf der Methode g, die wiederum einen Aufruf von f enthält.)<br />
• Beispiel: binäre Quersumme von n<br />
Hat die Binärdarstellung von n eine ungerade Zahl von Einsen?<br />
boolean qsumIs1(int n) {<br />
if (n == 0) return false; // Quersumme ist nicht 1<br />
else if ((n % 2) == 0)<br />
return qsumIs1(n / 2); // wenn gerade, dann muss binäre<br />
// Quersumme der Hälfte 1 sein.<br />
else return qsumIs0(n / 2); // wenn ungerade, dann muss bin.<br />
// Quersumme der Hälfte 0 sein.<br />
// Achtung / ist Div ohne Rest.<br />
}<br />
boolean qsumIs0(int n) {<br />
// analog<br />
}<br />
Algorithmen und Datenstrukturen Philippsen/Stamminger/Pflaum/Riehle WS 2010/2011 Folie 08-49