-2

我需要用 Python 编写 Sylvester 序列。序列的公式定义为

$$s_n = 1 + \prod_ {
  i = 0
} ^ {
  n - 1
}
s_i$$

哪里$s_0 = 2$

但是,我在 Python 中编写此代码时遇到了太多麻烦。有人对如何做有建议吗?

4

1 回答 1

2

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]
于 2016-04-25T15:27:46.917 回答