Iterativen Code in Rekursiven umwandeln?
Hi zusammen,
Ich soll einen Code erfinden, der das tägliche Gehalt (angefangen bei 1 Cent) jeden gearbeiteten Tag verdoppelt und die Funktion soll nur einen Parameter erhalten.
Den iterative habe ich bereits:
def print_gehalt_iterativ(tage):
a = 1
while tage > 0:
a = a + a
tage = tage - 1
print(a)
Ich komme leider nicht zur rekursiven Variante....
def print_gehalt_rekursiv(tage):
a = 1
if tage == 0:
return a
if tage > 0:
a = a + a
return a
else:
return print_gehalt_rekursiv(tage - 1)
kann mir einer helfen bitte? :) Danke, Lucia
1 Antwort
Die wird ja auch nur aufgerufen wenn Tage kleiner null werden.
Wenn die Tage 0 sind wirfste 1 zurück. (Ggf. Wenn die Tage == 1 sind. Je nachdem ob er nach einem Tag 1 Cent oder 2 Cent haben sollte. Ich tendiere eher zu Tage==1
Ansonsten: wirfste 2 * f(tage-1) verdoppelst du das Gehalt vom Tag davor.
Fertig.
Edit:
Lustigerweise brauchst du im nicht rekursive Fall noch nicht Mal ne Iteration.
Denn du musst einfach nur 2^(tage-1) rechnen.
Aber es geht ja darum das pattern zu üben. XD
Erstmal danke für deine Antwort, hätte vielleicht noch dazu sagen sollen, dass wir den Potenzoperator nicht benutzen sollen... ;D
Bin allerdings noch etwas neu in Python unterwegs, also soll ich meine else Anweisung verändern oder alles ? XD