2017-03-10 55 views
-1

我對Python有點新,並且一直在尋找和嘗試不同的解決方案來解決這個問題。使用前一個函數的結果重複一個函數的Python

我需要創建一個函數,不僅在函數內倒計時,而且還添加了以前的結果。

爲了幫助將這些考慮:

我有哪裏的時間對應於模型中的當前時間的每週成本的公式。它看起來像如下:

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

(其中旁邊時間由一個在一個特定範圍內增加的數量)

現在最終結果需要爲(例如)

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

這會持續到< = 1。所以我需要一個公式,該公式不僅將函數重複特定次數添加上一個結果,而且公式中的一個變量也會根據計數發生變化。我知道必須有一個有效的方法來做到這一點,但我似乎無法弄清楚。

任何幫助將是驚人的! 謝謝!

+0

你問如何計算5000^0 + 5000^1 + 5000^2 + ... + 5000 ^(時間1)?這是一個幾何級數,等於(5000^Time - 1)/ 4999。 –

回答

0

我想,你的公式是錯誤的,它應該是:

week1 = 5000 * (Time-1) 

用簡單的循環:

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

您可以同時使用sumgenerator expression在一行中實現它。

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

這裏沒有列表理解。此外,「時間」應該倒數(到我不知道的端點),而不是。 – TigerhawkT3

+0

@ TigerhawkT3,對不起,已更新。 –

0

解決此問題的一種方法是使用遞歸。簡而言之,它是一個函數,它將繼續自我調用,直到滿足特定的條件(在本例中爲時間< = 1)。

這樣做的缺點是它比簡單的循環使用更多的內存。

這方面的一個例子是:

def funcName(time): 
    sum = 0 
    if (time > 1): 
     sum = funcName(time-1) 
     sum += 5000**(time-1) 
    return sum 
相關問題