正如您所指出的,由于这是一个无限级数,我们将把它实现为一个生成器,以便我们可以提取该级数的术语:
def series_generator(x, y):
y = (x**y)
while True:
yield x
x, y = y, (x**y)
generator = series_generator(2, 3)
print(sum(next(generator) for _ in range(3)))
输出
% python3 test.py
266
但是,这个系列的术语增长非常快,并且非常快需要很长时间来计算。此示例中要添加的下一个系列术语是:
1552518092300708935148979488462502555256886017116696611139052038026050952686376886330878408828646477950487730697131073206171580044114814391444287275041181139204454976020849905550265285631598444825262999193716468750892846853816057856 P>
并且计算下一个将需要很长时间,以至于永远不会返回。为了让自己相信这是你描述的那样,我做了一个象征性的版本:
def series_generator(x='x', y='y'):
y = f"({x}**{y})"
while True:
yield str(x)
x, y = y, f"({x}**{y})"
generator = series_generator(2, 3)
print(" + ".join(next(generator) for _ in range(4)))
谁的输出是:
2 + (2**3) + (2**(2**3)) + ((2**3)**(2**(2**3)))
或者,如果您省略 series_generator() 的参数:
x + (x**y) + (x**(x**y)) + ((x**y)**(x**(x**y)))