MINT üben

Rekursion auf Zeichenketten

Zwei Aufgaben im Abiturformat — von der Geheimschrift bis zum Klammer-Check im Formeleditor.

Dein Fortschritt:
0 / 0 Aufgaben
1

Geheimschrift

AFB I–II

Für eine Schnitzeljagd werden Botschaften aus Großbuchstaben verschlüsselt, indem jeder Buchstabe um k Stellen im Alphabet verschoben wird; nach Z geht es mit A weiter. Die abgebildete Methode verwendet dazu die Zeichencodes aus Kapitel 1.

Material: Methode verschiebe
static String verschiebe(String s, int k) {
    if (s.length() == 0) {
        return "";
    }
    char c = s.charAt(0);
    char neu = (char) ('A' + (c - 'A' + k) % 26);
    return neu + verschiebe(s.substring(1), k);
}
  1. Beschreiben Sie, wie die Methode eine Zeichenkette rekursiv verarbeitet, und erläutern Sie die Zeile, in der neu berechnet wird. 4 BE
  2. Wenden Sie die Methode auf verschiebe("ZEBRA", 3) an. Geben Sie die Aufrufe und das Ergebnis an. 4 BE
  3. Erweitern Sie die Methode so, dass Leerzeichen unverändert übernommen werden. 4 BE
  4. Schätzen Sie ab, wie viele Zeichen durch substring insgesamt kopiert werden, wenn eine Botschaft mit 1000 Buchstaben verschlüsselt wird, und nennen Sie eine Möglichkeit, das zu vermeiden. 3 BE

Insgesamt 15 BE

Hinweise

Hinweis zu Aufgabe a)
Unterscheiden Sie Abbruchbedingung, Bearbeitung des ersten Zeichens und Selbstaufruf. Rechnen Sie die Zeile für c = 'Z' und k = 3 aus.
Hinweis zu Aufgabe b)
Jeder Aufruf erzeugt genau einen Buchstaben des Ergebnisses.
Hinweis zu Aufgabe c)
Das Leerzeichen hat keinen Platz im Alphabet — es braucht einen eigenen Fall.
Hinweis zu Aufgabe d)
Der erste Rest hat 999 Zeichen, der nächste 998 …