Guten Tag,
Also, folgende sehr knifflige (und natürlich völlig fiktive ;-)) Aufgabe:
- Mondmission läuft schief; Spaceshuttle stürzt ab
- Ziel (Basislager) um 500 km verfehlt
- Astronaut muss Basislager zu Fuß erreichen; er benötigt aber dringend Nahrung
- 450 Dosen Nahrung stehen zur Verfügung
- mit einer Dose kommt der Astronaut 15 km weit
- er kann aber nur 12 Dosen gleichzeitig tragen
Welche Möglichkeit gibt es, das Ziel mit gegebener Dosenanzahl zu erreichen? Es soll die Rekursion genutzt werden.
Meine erste Idee war es, 12 Dosen zu nehmen. Damit 15 km zu laufen und dann 10 Dosen abzulegen (2 werden jeweils für Hin- und Rückweg benötigt). Zurückgehen und alles wiederholen, bis das komplette Lager bei Kilometer 15 ist. Danach das selbe Spielchen von KM 15 nach KM 30, usw.
Leider zeigt mein Programm, dass es nicht reicht, da zu viel verbraucht wird:
Habt ihr eine Idee, mit welchem Algorithmus das Problem zu lösen wäre? Mir ist irgendwienichts mehr eingefallen...
Auch andere Varianten, wie 45 km laufen, 6 Dosen ablegen und 6 verbrauchen waren erfolglos.
Wäre toll, wenn ihr mir helfen könntet!
Grüße,
zero
Also, folgende sehr knifflige (und natürlich völlig fiktive ;-)) Aufgabe:
- Mondmission läuft schief; Spaceshuttle stürzt ab
- Ziel (Basislager) um 500 km verfehlt
- Astronaut muss Basislager zu Fuß erreichen; er benötigt aber dringend Nahrung
- 450 Dosen Nahrung stehen zur Verfügung
- mit einer Dose kommt der Astronaut 15 km weit
- er kann aber nur 12 Dosen gleichzeitig tragen
Welche Möglichkeit gibt es, das Ziel mit gegebener Dosenanzahl zu erreichen? Es soll die Rekursion genutzt werden.
Meine erste Idee war es, 12 Dosen zu nehmen. Damit 15 km zu laufen und dann 10 Dosen abzulegen (2 werden jeweils für Hin- und Rückweg benötigt). Zurückgehen und alles wiederholen, bis das komplette Lager bei Kilometer 15 ist. Danach das selbe Spielchen von KM 15 nach KM 30, usw.
Leider zeigt mein Programm, dass es nicht reicht, da zu viel verbraucht wird:
Code:
public class Mission {
public static void mission(double dosen, double strecke) {
double verbrauch = 0;
double lager = 0;
double gesamt = 0;
if (strecke > 0) {
while (gesamt < dosen) {
verbrauch = verbrauch + 2;
lager = lager + 10;
gesamt = verbrauch + lager;
}
lager = lager - 10;
verbrauch = verbrauch - 2;
gesamt = verbrauch + lager;
strecke = strecke - 15;
mission(lager, strecke);
}
System.out.println("Gesamter Dosenverbrauch: " + gesamt
+ "\t Reststrecke: " + strecke + "\t Dosen im Zwischelager: "
+ lager);
}
public static void main(String[] args) {
mission(450, 500);
}
}
Habt ihr eine Idee, mit welchem Algorithmus das Problem zu lösen wäre? Mir ist irgendwienichts mehr eingefallen...
Auch andere Varianten, wie 45 km laufen, 6 Dosen ablegen und 6 verbrauchen waren erfolglos.
Wäre toll, wenn ihr mir helfen könntet!
Grüße,
zero