faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:start [09.05.2023 11:21] Frank Schiebelfaecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:start [29.01.2024 08:01] (aktuell) Marco Kuemmel
Zeile 5: Zeile 5:
 === (A1) Potenzberechnung ===  === (A1) Potenzberechnung === 
    
-Implementiere  eine  rekursive  Methode  ''Potenz(a,n)'',  die  bei  Eingabe  einer +Implementiere  eine  rekursive  Methode  ''potenz(a,n)'',  die  bei  Eingabe  einer 
 Dezimalzahl ''a'' und einer natürlichen Zahl ''n'' als Ergebnis die Potenz ''a''<sup>''n''</sup> zurückgibt.  Dezimalzahl ''a'' und einer natürlichen Zahl ''n'' als Ergebnis die Potenz ''a''<sup>''n''</sup> zurückgibt. 
  
-//Beispiel:// Der Aufruf ''Potenz(2.5,3)'' gibt den Wert 15,625 zurück. +//Beispiel:// Der Aufruf ''potenz(2.5,3)'' gibt den Wert 15,625 zurück. 
  
  
Zeile 45: Zeile 45:
 === (A2) Verzinsung ===  === (A2) Verzinsung === 
  
-Implementiere eine rekursive Methode ''Guthaben(g,z,n)'', die bei Eingabe +Implementiere eine rekursive Methode ''guthaben(g,z,a)'', die bei Eingabe 
 eines  Guthabens  ''g''  in  Euro,  eines  Zinssatzes  ''z''  in  Prozent  und  einer  Laufzeit  ''a''  in  eines  Guthabens  ''g''  in  Euro,  eines  Zinssatzes  ''z''  in  Prozent  und  einer  Laufzeit  ''a''  in 
 Jahren als Ergebnis das verzinste Guthaben nach Ende der Laufzeit zurückgibt. Jahren als Ergebnis das verzinste Guthaben nach Ende der Laufzeit zurückgibt.
    
-//Beispiel:// Der Aufruf ''Guthaben(1000,1,2)'' gibt den Betrag 1020,10 (€) zurück. +//Beispiel:// Der Aufruf ''guthaben(1000,1,2)'' gibt den Betrag 1020,10 (€) zurück. 
  
 ++++ 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/100))^+  G(g,z,a)=g*(1+(z/100))^
  
 ++++ ++++
Zeile 61: Zeile 61:
 === (A3) Fibonacci-Zahlen ===  === (A3) Fibonacci-Zahlen === 
  
-Implementiere  eine  rekursive  Methode  ''Fibonacci(n)'',  die  bei  Eingabe  einer +Implementiere  eine  rekursive  Methode  ''fibonacci(n)'',  die  bei  Eingabe  einer 
 natürlichen  Zahl  ''n''  als  Ergebnis  die  ''n''-te  Fibonacci-Zahl  zurückgibt.  Die  erste  und  natürlichen  Zahl  ''n''  als  Ergebnis  die  ''n''-te  Fibonacci-Zahl  zurückgibt.  Die  erste  und 
 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''
  
-//Beispiel:// Der Aufruf ''Fibonacci(11)'' gibt die Zahl 89 zurück. +//Beispiel:// Der Aufruf ''fibonacci(11)'' gibt die Zahl 89 zurück. 
  
 ++++ 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 ''fibonacci(n-1)'' und ''fibonacci(n-2)'' bekannt sein, um ''fibonacci(n)'' auszurechnen.
  
 Fange an wie immer: Fallunterscheidung, Basisfall. Überlege dann, was im Rekursionsfall geschehen muss. Fange an wie immer: Fallunterscheidung, Basisfall. Überlege dann, was im Rekursionsfall geschehen muss.
  
 +++++
 +
 +++++ Methodengerüst | 
 +<code java>
 +public int fibonacci(int n){
 +    // Bsisfall
 +    if (n==1||n==2) {
 +      return FIXME
 +    } else {
 +      return FIXME
 +    }
 +}
 +</code>
 ++++ ++++
  
Zeile 95: Zeile 108:
 {{ :faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:string01.drawio.png |}}  {{ :faecher:informatik:oberstufe:algorithmen:rekursion:uebungen01:string01.drawio.png |}} 
  
-Die Länge des Strings kann man mit ''word.lenght()'' ermitteln.+Die Länge des Strings kann man mit ''word.length()'' ermitteln.
  
 === Tipp 1: Basisfall === === Tipp 1: Basisfall ===
Zeile 103: Zeile 116:
 === Tipp 2: Rekursionsfall === === Tipp 2: Rekursionsfall ===
  
-Anders als bei den bisherigen Beisipielen muss sich die Methode nicht unbedingtwieder selbst aufrufen, sondern nur dann, wenn das Wort nach dem bisherigen Kenntnisstand ein Palindrom sein könnte. Welche Bedingung muss erfüllt sein, damit es sich lohnt, das Wort weiter zu untersuchen?+Anders als bei den bisherigen Beispielen muss sich die Methode nicht unbedingt wieder selbst aufrufen, sondern nur dann, wenn das Wort nach dem bisherigen Kenntnisstand ein Palindrom sein könnte. Welche Bedingung muss erfüllt sein, damit es sich lohnt, das Wort weiter zu untersuchen?
  
-++++ Hinweis 1: Codegerüst |+++++ Hinweis: Codegerüst |
  
 <code java> <code java>
Zeile 124: Zeile 137:
 ++++ ++++
  
-++++ Lösungsvorschlag | +++++ Lösungsvorschlag 
  
 <code java> <code java>
Zeile 144: Zeile 157:
 </code> </code>
 ++++ ++++
 +
 +++++ 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, start, end);
 +    }
 +</code>
 +++++
 +
  • faecher/informatik/oberstufe/algorithmen/rekursion/uebungen01/start.1683624078.txt.gz
  • Zuletzt geändert: 09.05.2023 11:21
  • von Frank Schiebel