5.4 RucksackRek d) und e)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

5.4 RucksackRek d) und e)
“In der Methode versucheAnderenGegenstand() soll die Rekursion unter der Annahme
fortgesetzt werden, dass der momentan betrachtete Gegenstand nicht gepackt wird. Der
Rückgabewert soll dem Wert des gepackten Rucksacks entsprechen.”

Ich stehe grade vollkommen auf dem Schlauch.
Die Methode erhält doch nur das array mit den Größen, den werten, wie viel platz noch frei ist und was der aktuelle Gegenstand ist der gepackt/nicht gepackt werden soll.
Zurückgeben soll die Methode den Wert des gepackten Rucksacks.
1: der wert des rucksacks sollte sich doch nicht ändern korrekt?
2: woher weiß die methode selbst was der aktuelle Rucksack wert ist? wenn ich in der hilfsfunktion besterwert1 = besterwert1 + versucheAnderenGegenstand rechne hätte ich ja dort das Ergebnis,
aber die aufgabe sagt ja dass die methode selbst den “fertigen” wert übergeben soll.

Ich hoffe ich verstehe einfach irgend etwas vollkommen falsch, denn unter diesen Annahmen habe ich keine Vorstellung wie das Problem lösbar ist.


Das Zauberwort heißt Rekursion ;).

Du sollst in dieser Funktion ja einen (verschränkt) rekursiven Aufruf ausführen. Und letztlich liefert dir dieser Aufruf den besten Wert für einen Rucksack mit den übergebenen Parametern. Es geht hier also nicht darum, dass du den Wert des Rucksacks vorher schon irgendwie kennst, sondern, dass du durch deinen rekursiven Aufruf dein Problem (in Form von Rucksackgröße und Gegenstandszahl) immer mehr verkleinerst, bis der Wert des Rucksacks trivial ist (ein Rucksack ohne Platz oder ohne Gegenstände, die man reinpacken könnte), mit Hilfe dieses Basiswerts wird nun beim Zurückkehren der jeweiligen rekursiven Funktionen Schritt für Schritt der bestmögliche Rucksackwert ermittelt und wieder zurückgegeben.