因子不输出整数

时间:2013-04-08 01:42:38

标签: python

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

我遇到的问题是def factorial不输出整数。我意识到它不会给它如何写,但我不知道我怎么能做到。 total是我希望从def factorial输出的int。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)

{{1}}

2 个答案:

答案 0 :(得分: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之后的所有内容,并将其用作ss = factorial(w)的值。

答案 1 :(得分: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)

更新:在“返回”的解决方案中,您需要O(n * n)时间进行因子值计算。但是对于“收益率”,你只需要O(n)。