2017-03-10 6 views
-1

Ich bin ein wenig neu zu Python und habe gesucht und versucht verschiedene Lösungen für dieses Problem.Python wiederholt eine Funktion mit dem Ergebnis der vorherigen Funktion

Ich muss eine Funktion erstellen, die nicht nur innerhalb der Funktion zählt, sondern auch die vorherigen Ergebnisse hinzufügt.

Um dies in Zusammenhang zu helfen zu setzen:

Ich habe eine Formel für eine wöchentliche Gebühr, wo Zeit innerhalb des Modells auf die aktuelle Zeit entspricht. Es sieht wie folgt aus:

week1 = 5000**((Time-1)) 
week2 = 5000**((Time-2)) 
... 

(wo die Zahl neben Zeit wird durch eine über einen bestimmten Bereich zu erhöhen)

nun das Endergebnis (zum Beispiel) sein muss

if Time > 5: 
     return week1+ week2+ week3+ week4+ week5 
elif Time == 5: 
     return week1+ week2+ week3+ week4 

Dies würde mit der Zeit fortfahren < = 1. Also brauche ich eine Formel, bei der nicht nur die Funktion eine bestimmte Anzahl von Malen wiederholt wird, die das vorherige Ergebnis hinzufügt, sondern eine der Variablen in der Formel ändert sich auch basierend auf der Anzahl. Ich weiß, dass es einen effizienten Weg geben muss, dies mit einer Schleife zu tun, aber ich kann es nicht herausfinden.

Jede Hilfe wäre toll! Danke!

+0

Sie fragt, wie^zu berechnen, 5000 0 + 5000^1 + 5000^2 + ... + 5000^(Time-1)? Es ist eine geometrische Progression und ist gleich (5000^Time - 1)/4999. –

Antwort

0

Ich denke, Ihre Formel falsch ist, sollte es sein:

week1 = 5000 * (Time-1) 

Mit einfacher Schleife:

result = 0 
for i in range(Time): 
    result += 5000 * (Time - i) 
print result 

Sie es in einer Zeile sowohl mit sum und generator expression erreichen können.

result = sum(5000 *(Time - i) for i in range(Time)) 
+0

Dort ist kein Listenverständnis. Außerdem sollte "Zeit" rückwärts zählen (zu welchem ​​Endpunkt ich nicht weiß), nicht nach oben. – TigerhawkT3

+0

@ TigerhawkT3, Entschuldigung, aktualisiert. –

0

Eine Möglichkeit, dieses Problem zu lösen, ist die Rekursion. Einfach gesagt, ist es eine Funktion, die sich weiterhin selbst aufruft, bis eine bestimmte Bedingung erfüllt ist (Zeit < = 1 in diesem Beispiel).

Der Nachteil dabei ist, dass es mehr Speicher als eine einfache Schleife verwendet.

Ein Beispiel dafür wäre:

def funcName(time): 
    sum = 0 
    if (time > 1): 
     sum = funcName(time-1) 
     sum += 5000**(time-1) 
    return sum 
Verwandte Themen