Hallo,
sitz hier gerade in der Uni um für Übungen die Aufgaben zu machen. Darunter ist eine eigentlich total einfache Aufgabe - und zwar die, einen Copy-Shop zu entwerfen, der abhängig von der verlangten Kopie-Anzahl verschiedene Vergünstigungen in den Preis mit einbezieht.
Der Nutzer soll also Angeben, wie viele Kopien er will und das Programm soll nach folgender Tabelle den Preis berechnen:
1 Kopie = 0.1 EUR
6 Kopien = 0.5 EUR
15 Kopien = 1 EUR
Das ganze ist iterativ und rekursiv zu lösen. Die iterative Lösung hat 3 Minuten gedauert und lief direkt fehlerfrei. Die rekursive Variante macht mir aber zu schaffen. Meinen (in meinen Augen) bisher besten Lösungsansatz seht ihr hier:
Hab jetzt bestimmt schon auf 10 verschiedene Weisen versucht dem Problem zu begegnen, aber immer ist die Ausgabe verkehrt (oder nur in den Sonderfällen 0, 1, 6, 15 richtig).
Bin hier langsam am verzweifeln. Hab Rekursion noch nie gemocht aber hier ists irgendwie aus. Verstehe nicht so ganz wie ich es so hinbekommen soll, dass der rekursiv die 3 (bzw. 4) Fälle berücksichtigt.
Kann mir jemand helfen?
sitz hier gerade in der Uni um für Übungen die Aufgaben zu machen. Darunter ist eine eigentlich total einfache Aufgabe - und zwar die, einen Copy-Shop zu entwerfen, der abhängig von der verlangten Kopie-Anzahl verschiedene Vergünstigungen in den Preis mit einbezieht.
Der Nutzer soll also Angeben, wie viele Kopien er will und das Programm soll nach folgender Tabelle den Preis berechnen:
1 Kopie = 0.1 EUR
6 Kopien = 0.5 EUR
15 Kopien = 1 EUR
Das ganze ist iterativ und rekursiv zu lösen. Die iterative Lösung hat 3 Minuten gedauert und lief direkt fehlerfrei. Die rekursive Variante macht mir aber zu schaffen. Meinen (in meinen Augen) bisher besten Lösungsansatz seht ihr hier:
Code:
static double REK_kosten(int k) {
if (k==15) {return 1;} else
if (k==6) {return 0.5;} else
if (k<=6 & k>0) {return 0.1;} else
if (k==0) {return 0;}
else {
if (k/15>1) {return k/15*REK_kosten(k-1);} else
if (k/6>1) {return k/6*REK_kosten(k-1);} else
return k*REK_kosten(k-1);
}
}
Hab jetzt bestimmt schon auf 10 verschiedene Weisen versucht dem Problem zu begegnen, aber immer ist die Ausgabe verkehrt (oder nur in den Sonderfällen 0, 1, 6, 15 richtig).
Bin hier langsam am verzweifeln. Hab Rekursion noch nie gemocht aber hier ists irgendwie aus. Verstehe nicht so ganz wie ich es so hinbekommen soll, dass der rekursiv die 3 (bzw. 4) Fälle berücksichtigt.
Kann mir jemand helfen?