我在使用 problem 2 时遇到了问题在欧拉计划上。目标是求斐波那契数列中不超过四百万的偶数项之和。出于某种原因,我一直得到 0 作为我的输出。我做错了什么?
total = 0
count = 0
term = 0
fibonacciMemo = {0:0, 1:1}
def main ():
term = fibonacci (count)
while (term <= 4000000):
if (term % 2 == 0):
total += term
count += 1
def fibonacci (n):
if not n in fibonacciMemo:
fibonacciMemo [n] = fibonacci (n - 1) + fibonacci (n - 2)
return fibonacciMemo [n]
print (total)
请您参考如下方法:
一些问题:
您永远不会调用
main函数。您必须显式调用它才能执行。main中对变量term、count、total的赋值不会写入到全局变量。相反,将创建具有相同名称的不同局部变量,即使在调用main之后,全局变量仍将具有值0。解决此问题的一种方法是在
main中添加行global term, count, total。但这是糟糕的设计。更好的方法是删除全局变量(使它们都在main本地),并让main返回total的值。然后print(main())将显示结果。您只需在
main中调用一次fibonacci- 您需要将其放入循环中。否则循环将无限运行,因为term永远不会更新。
