2017-03-10 57 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 
相关问题