我不是一个非常有经验的程序员,但我只是用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}}
答案 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
之后的所有内容,并将其用作s
中s = 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)。