我是Python新手,这就是为什么我在其他人可能觉得很容易的问题上遇到麻烦。在
这个问题的背景:Euler项目,问题2。这个问题本质上要求我们把斐波纳契序列中的所有偶数项相加,使每个项都在4000000以下。我决定用一个封闭公式来计算第n个斐波纳契项,这与网上显示的答案稍有不同。现在,假设这个函数被称为Fibonacci(n).
我基本上想做的是遍历一个未知数量的整数,这些整数代表Fibonacci集的索引(即1,2,3,4。。。如果结果除以2时没有余数,则将每个值插入Fibonacci(n).,然后将这个Fibonacci数添加到最初设置为0的某个值中。在
以下是我目前所掌握的情况:def Fibonacci(n):
return (1/(5**0.5))*((((1+5**0.5)/2)**n)-(((1-5**0.5)/2)**n))
i=0
FibSum = 0
nFib = 0
while (nFib <= 10):
nFib = Fibonacci(i)
if(nFib%2==0):
FibSum += nFib
i += 1
print FibSum
(是的,正如您所看到的,我将Fibonacci序列限制为10,而不是4000000;这仅仅是为了测试的缘故。)
现在,我的问题是:当我运行这段代码时,我得到的是2.0而不是10.0(2和8是两个应该相加的斐波纳契数)。在
怎么了?我的猜测是,循环在到达第三个Fibonacci数(2)后停止,并且不会继续超过这个值。有人看到我的代码有问题吗?在
如果您有任何进一步的问题,请发表意见。提前谢谢。在