MINT üben

Rekursion und Iteration

Zwei Aufgaben im Abiturformat — von Messreihen bis zu Routen durch den Stadtplan.

Dein Fortschritt:
0 / 0 Aufgaben
1

Messwerte über der Grenze

AFB I–II

Eine Wetterstation speichert Tageshöchstwerte der Temperatur in °C in einer Reihung werte. Ein Programm zählt, an wie vielen Tagen eine Grenze überschritten wurde. Es verwendet die abgebildete Methode, die mit zaehleUeber(werte, grenze, 0) aufgerufen wird.

Material: rekursive Methode
static int zaehleUeber(int[] werte, int grenze, int i) {
    if (i == werte.length) {
        return 0;
    }
    int rest = zaehleUeber(werte, grenze, i + 1);
    if (werte[i] > grenze) {
        return rest + 1;
    }
    return rest;
}
  1. Beschreiben Sie, wie die Methode das Ergebnis ermittelt. Gehen Sie dabei auf Abbruchbedingung und Rekursionsschritt ein. 3 BE
  2. Wenden Sie die Methode auf werte = {12, 31, 27, 8, 35} und grenze = 25 an. Stellen Sie die Aufrufe in einer Tabelle mit i, werte[i], rest und Rückgabewert dar. 5 BE
  3. Implementieren Sie eine gleichwertige Methode zaehleUeber(int[] werte, int grenze) ohne Selbstaufruf. 4 BE
  4. Erläutern Sie, warum für eine Messreihe über 300 Jahre (etwa 110 000 Werte) die iterative Fassung vorzuziehen ist. 3 BE

Insgesamt 15 BE

Hinweise

Hinweis zu Aufgabe a)
Welcher Wert entsteht für den leeren Rest der Reihung? Wann wird zum Ergebnis des Restes 1 addiert?
Hinweis zu Aufgabe b)
Die Aufrufe laufen mit i = 0 bis i = 5; die Rückgabewerte entstehen von hinten nach vorn.
Hinweis zu Aufgabe c)
Die Abbruchbedingung liefert den Startwert der Zählvariablen.
Hinweis zu Aufgabe d)
Wie viele Rahmen liegen bei der rekursiven Fassung gleichzeitig auf dem Stapel?