我需要用 Python 编写 Sylvester 序列。序列的公式定义为
$$s_n = 1 + \prod_ {
i = 0
} ^ {
n - 1
}
s_i$$
哪里$s_0 = 2$
。
但是,我在 Python 中编写此代码时遇到了太多麻烦。有人对如何做有建议吗?
Python中一个简单的递归解决方案:
def sylvelster(n):
product = 1
for k in range(n):
product *= sylvelster(k)
return product + 1
或者你可以选择一直流行的精致外观的一个班轮:
from functools import reduce
from operator import mul
def sylvelster(n):
return 1 + reduce(mul, map(sylvelster, range(n)), 1)
或迭代解决方案(使用显式堆栈)而不是递归解决方案(使用隐式堆栈):
from functools import reduce
from operator import mul
def sylvelster(n):
products = [2]
for k in range(n):
products.append(1 + reduce(mul, products, 1))
return products[-1]