如何定义一个引用范围内先前值的函数?

所以我试图定义一个数学上看起来像这样的函数: M_n = M_n-1(1+g) –– 其中 n 和 n-1 是下标,g 是常数。


我想在 1 到 100 的范围内执行此操作。我已经有了 n=1 的值。我到现在为止的代码看起来像这样


for num in range(1,100):

    if num <= 1:

        print(M_n)    # since I already have an M_n for n=1

因此,从 n=2 开始,我如何确保 M_n 引用其先前的值并对其执行以下操作:M_n-1(1+g)?


任何帮助将非常感激!


ABOUTYOU
浏览 183回答 1
1回答

收到一只叮咚

M_(n-1)只是最近的计算,在循环的前一次迭代中产生的计算。将其存储在一个变量中,并在下一次迭代中再次引用它。如果您不需要中间M_n值,只需保留一个更新的结果:m = 1&nbsp; # M_0, so the starting value for the sequencefor n in range(1, 100):&nbsp; &nbsp; # update M_n for the current iteration&nbsp; &nbsp; m *= 1 + g或者您可以附加到列表(此时前面的值始终是列表中的最后一个值):m = [1]&nbsp; # list with M_0, so the starting value for the sequencefor n in range(1, 100):&nbsp; &nbsp; # add M_n for the current iteration&nbsp; &nbsp; m.append(m[-1] * (1 + g))或用于itertools.accumulate()累积所有值:from itertools import accumulate, chaincalc_mn = lambda prev, n: prev * (1 + g)# calculate starting from [1] for M_0m = accumulate(chain([1], range(1, 100)), calc_mn)在后一种情况下m,迭代器在迭代时产生结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python