arrayList.remove(INDEX);
In diesem – für das Teile-und-Herrsche-Prinzip etwas künstliche – Problem soll die Summe aller Zahlen in einem Array aus Integer-Zahlen berechnet werden.
Lade dir das Bluej-Projekt von https://codeberg.org/qg-info-unterricht/array-summe herunter.
sumIterativ()
, die mit Hilfe einer Schleife die Summe aller Array-Elemente berechnet. Wie kann man dieses Problem rekursiv lösen? Zur Erinnerung:
Was ist der direkt lösbare Basisfall für dieses Problem? Wie muss ein Array beschaffen sein, damit man die Summe aller Array Elemente unmittelbar erkennen kann?
Um das Teile-und-Herrsche Prinzip anwenden zu können muss man sich nun einen Rekursionsfall überlegen, der uns dem Basisfall, dem "Ziel" des leeren Arrays immer näher bringt.
Wie kann man also beispielsweise die folgende Situation so verändern, dass die zur Summe aus kleineren Array(s) führt?
Die Funktionsweise kann man also dem folgenden Flussdiagramm, entnehmen:
Das ist nun wieder eine klassische Rekursion, deren Aufrufe alle auf dem Call-Stack landen, bis der Basisfall erreicht ist. Erst dann können die vorigen Aufrufe abgeschlossen werden.
Implementiere die rekursive Methode sumRekursiv
im Bluej-Projekt nach den Erläuterungen dieser Wiki-Seite.1)
Schreibe eine rekursive Methode zum Ermitteln der größten Zahl im Array.
arrayList.remove(INDEX);