我试图使用Python解决以下问题:
Fibonacci序列中的每个新术语都是通过添加前两个术语生成的.从1和2开始,前10个术语将是:
1,2,3,5,8,13,21,34,55,89 ……
通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和.
到目前为止,我已经能够生成Fibonacci元素,但在尝试对偶数元素求和时,我的代码似乎停滞不前.以下是代码:
def fib(n):
if n==0:
return 0
elif n==1:
return 1
if n>1:
return fib(n-1)+fib(n-2)
n=0
total=0
while fib(n)<=4000000:
if fib(n)%2==0:
total+=fib(n)
print(total)
欢迎大家提出意见.
解决方法:
你有一个无限循环,因为你的while循环中n不会从零增加.另外,为什么不总和你的Fibonacci总数以及在同一个while循环中找到下一个Fibonacci值,如下所示:
x= 1
y=1
total = 0
while x <= 4000000:
if x % 2 == 0:
total += x
x, y = y, x + y
print (total)
输出:
4613732