Präsentationsfolien (PDF)

Präsentationsfolien (PDF) Präsentationsfolien (PDF)

ddi.informatik.uni.erlangen.de
von ddi.informatik.uni.erlangen.de Mehr von diesem Publisher
04.11.2013 Aufrufe

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

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!