Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:teile_und_herrsche:arraysumme:start [26.01.2022 21:17] – sbel | faecher:informatik:oberstufe:algorithmen:teile_und_herrsche:arraysumme:start [26.01.2022 22:03] (aktuell) – [Rekursion! Teile und herrsche...] sbel | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
* Implementiere die iterative Methode '' | * Implementiere die iterative Methode '' | ||
- | + | ===== Rekursion! Teile und herrsche... ===== | |
+ | Wie kann man dieses Problem rekursiv lösen? Zur Erinnerung: | ||
+ | * Finde einen einfachen Fall, den du als Basisfall verwenden kannst. | ||
+ | * Finde heraus, wie du die Aufgabe vereinfachen kannst, um zum Basisfall zu gelangen. | ||
+ | |||
+ | **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? | ||
+ | |||
+ | ++++ Antwort: | Wenn das Array die Länge 0 oder 1 hat, ist das Ergebnis sehr einfach zu ermitteln: Im Falle des leeren Arrays ist die Summe 0, im Fall des Arrays mit der Länge 1 ist die Summe der Wert des einzigen Array-Elements. | ||
+ | ++++ | ||
+ | |||
+ | Um das Teile-und-Herrsche Prinzip anwenden zu können muss man sich nun einen Rekursionsfall überlegen, der uns dem Basisfall, dem " | ||
+ | |||
+ | Wie kann man also beispielsweise die folgende Situation so verändern, dass die zur Summe aus kleineren Array(s) führt? | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ++++ Antwort: | | ||
+ | Zum Beispiel so: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | Die Funktionsweise kann man also dem folgenden Flussdiagramm, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Implementiere die rekursive Methode '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Schreibe eine rekursive Methode zum Ermitteln der größten Zahl im Array. |