Dein Fortschritt:
0 / 0 Aufgaben
1
Messwerte über der Grenze
AFB I–IIEine 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;
}- Beschreiben Sie, wie die Methode das Ergebnis ermittelt. Gehen Sie dabei auf Abbruchbedingung und Rekursionsschritt ein. 3 BE
- Wenden Sie die Methode auf
werte = {12, 31, 27, 8, 35}undgrenze = 25an. Stellen Sie die Aufrufe in einer Tabelle miti,werte[i],restund Rückgabewert dar. 5 BE - Implementieren Sie eine gleichwertige Methode
zaehleUeber(int[] werte, int grenze)ohne Selbstaufruf. 4 BE - 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?
