Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:start [09.05.2023 09:18] – Frank Schiebel | faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:start [29.01.2024 07:01] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
=== (A1) Potenzberechnung === | === (A1) Potenzberechnung === | ||
- | Implementiere | + | Implementiere |
Dezimalzahl '' | Dezimalzahl '' | ||
- | // | + | // |
Zeile 45: | Zeile 45: | ||
=== (A2) Verzinsung === | === (A2) Verzinsung === | ||
- | Implementiere eine rekursive Methode '' | + | Implementiere eine rekursive Methode '' |
eines Guthabens | eines Guthabens | ||
Jahren als Ergebnis das verzinste Guthaben nach Ende der Laufzeit zurückgibt. | Jahren als Ergebnis das verzinste Guthaben nach Ende der Laufzeit zurückgibt. | ||
- | // | + | // |
++++ Hinweis | | ++++ Hinweis | | ||
Das funktioniert genau wie Aufgabe 1, wenn man sich klar macht, dass das Guthaben nach a Jahren berechnet werden kann als: | Das funktioniert genau wie Aufgabe 1, wenn man sich klar macht, dass das Guthaben nach a Jahren berechnet werden kann als: | ||
- | G(b,z,a)=b*(1+(z/ | + | G(g,z,a)=g*(1+(z/ |
++++ | ++++ | ||
Zeile 61: | Zeile 61: | ||
=== (A3) Fibonacci-Zahlen === | === (A3) Fibonacci-Zahlen === | ||
- | Implementiere | + | Implementiere |
natürlichen | natürlichen | ||
zweite Fibonacci-Zahl ist jeweils 1. Die weiteren Fibonacci-Zahlen berechnen sich als | zweite Fibonacci-Zahl ist jeweils 1. Die weiteren Fibonacci-Zahlen berechnen sich als | ||
Zeile 67: | Zeile 67: | ||
2, 3, 5, 8, 13, 21, 34, 55'' | 2, 3, 5, 8, 13, 21, 34, 55'' | ||
- | // | + | // |
++++ Hinweis | | ++++ Hinweis | | ||
- | Das ist ein Beispiel, in dem sich die Funktion im Rekursionsfall mehr als einmal selbst aufruft. Es muss ja fibonacci(n-1) und fibonacci(n-2) bekannt sein, um fibonacci(n) auszurechnen. | + | Das ist ein Beispiel, in dem sich die Funktion im Rekursionsfall mehr als einmal selbst aufruft. Es muss ja '' |
Fange an wie immer: Fallunterscheidung, | Fange an wie immer: Fallunterscheidung, | ||
+ | ++++ | ||
+ | |||
+ | ++++ Methodengerüst | | ||
+ | <code java> | ||
+ | public int fibonacci(int n){ | ||
+ | // Bsisfall | ||
+ | if (n==1||n==2) { | ||
+ | return FIXME | ||
+ | } else { | ||
+ | return FIXME | ||
+ | } | ||
+ | } | ||
+ | </ | ||
++++ | ++++ | ||
Zeile 95: | Zeile 108: | ||
{{ : | {{ : | ||
- | Die Länge des Strings kann man mit '' | + | Die Länge des Strings kann man mit '' |
=== Tipp 1: Basisfall === | === Tipp 1: Basisfall === | ||
Zeile 103: | Zeile 116: | ||
=== Tipp 2: Rekursionsfall === | === Tipp 2: Rekursionsfall === | ||
- | Anders als bei den bisherigen | + | Anders als bei den bisherigen |
- | ++++ Hinweis | + | ++++ Hinweis: Codegerüst | |
+ | |||
+ | <code java> | ||
public boolean palindrom(String word, int start, int end) | public boolean palindrom(String word, int start, int end) | ||
{ | { | ||
Zeile 119: | Zeile 134: | ||
return false; | return false; | ||
} | } | ||
+ | </ | ||
+ | ++++ | ||
+ | ++++ Lösungsvorschlag 1 | | ||
+ | |||
+ | <code java> | ||
+ | public boolean palindrom(String word, int start, int end) | ||
+ | { | ||
+ | // Basisfall | ||
+ | if (end-start< | ||
+ | return true; | ||
+ | } | ||
+ | // Rekursionsfall | ||
+ | if (word.charAt(start) == word.charAt(end)) { | ||
+ | start=start+1; | ||
+ | end=end-1; | ||
+ | return palindrom(word, | ||
+ | } | ||
+ | // Kein Palindrom | ||
+ | return false; | ||
+ | } | ||
+ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ++++ Lösungsvorschlag 2 | | ||
+ | |||
+ | <code java> | ||
+ | public boolean palindrom(String word, int start, int end) { | ||
+ | |||
+ | // Basisfall | ||
+ | if (end - start <= 1) { | ||
+ | return word.charAt(start) == word.charAt(end); | ||
+ | } | ||
+ | // Rekursionsfall | ||
+ | else { | ||
+ | start = start + 1; | ||
+ | end = end - 1; | ||
+ | return palindrom(word, | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ |