0

我不是一个很有经验的程序员,但我只是用 Python 写了这个来尝试查找e,使用的定义e是 1/0 的总和!+ 1/1!+ 1/2!ETC...

我遇到的问题是def factorial不输出整数。我意识到它不会给出它是如何写的,但我不确定我怎么能做到。total是我希望从def factorial.

e = 0

def factorial(m):
    n = m - 1
    total = 1
    if n > 0:
        total = m
    while n > 0:
        total = total * n
        n = n - 1

for w in range(0,100):
    s = factorial(w)
    e = e + ( 1 / s )

print(e)
4

2 回答 2

6
def factorial(m):
    n = m - 1
    total = 1
    if n > 0:
        total = m
    while n > 0:
        total = total * n
        n = n - 1
    return total

编辑:问题是,为了从中获取信息factorial,您必须使用 return 语句。之后的任何内容return都被评估,并用作sin的值s = factorial(w)

于 2013-04-08T01:44:25.710 回答
2

Feffernoose 的代码有效。但是为了提高您的情况下的性能,您最好使用“yield”语句来构建一个可迭代对象。

e = 0
def factorial(m):
    assert(m>1)
    current = 0
    total = 1
    while current<=m:
        yield total
        current += 1
        total *= current

for w in factorial(100):
    e = e + ( 1 / w )
print(e)

更新:在带有“return”的解决方案中,您大约需要 O(n*n) 时间来计算阶乘值。但是有了“产量”,你只需要 O(n)。

于 2013-04-08T02:07:24.530 回答