我尝试使用Python解决以下问题:
Fibonacci序列中的每个新项都是通过将前两项相加而生成的。从1和2开始,前10个术语将是: 1,2,3,5,8,13,21,34,55,89。。。
通过考虑Fibonacci序列中值不超过400万的项,求偶数项的和。
到目前为止,我已经能够生成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)
欢迎提出任何建议。在
因为这看起来像是家庭作业,所以我加入了一些有趣的Python
您有一个无限循环,因为
n
在while
循环中从未从零递增。另外,为什么不求和Fibonacci total以及在同一个while
循环中找到下一个Fibonacci值,如下所示:输出:
^{pr2}$为了好玩,这里有一个非常简短的解决方案:
它基于以下事实:
每三个斐波纳契数都是偶数。
如果的偶数Fibonacci数的和等于到
Fib(n)
是偶数,那么到^{Fib(n)
的奇数Fibonacci数的和(因为每个偶数Fibonacci数都是前面两个奇数Fibonacci数的和)。直到并包括
Fib(n)
的所有Fibonacci数(偶数和奇数)的和是Fib(n+2) - 1
(通过一个简单的归纳证明)。所以如果
Fib(n)
是最后一个包含在和中的偶数,那么 你想要的总数是(Fib(n+2) - 1) / 2
。在相关问题 更多 >
编程相关推荐