Python 欧拉投影:偶数斐波那契数
斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10个术语将是: 1、2、3、5、8、13、21、34、55、89 通过考虑Fibonacci序列中值不超过400万的项,求偶数值项之和 我的程序打印4613731,但应该是4613732。问题出在哪里?Python 欧拉投影:偶数斐波那契数,python,project,fibonacci,solution,eulers-number,Python,Project,Fibonacci,Solution,Eulers Number,斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10个术语将是: 1、2、3、5、8、13、21、34、55、89 通过考虑Fibonacci序列中值不超过400万的项,求偶数值项之和 我的程序打印4613731,但应该是4613732。问题出在哪里? def fib(n): if n == 0: return 1 elif n == 1: return 2 else: return fib(n-1)+f
def fib(n):
if n == 0:
return 1
elif n == 1:
return 2
else:
return fib(n-1)+fib(n-2)
tot = 0
n = 0
while fib(n) <= 4000000:
if fib(n) % 2 != 0:
tot += fib(n)
n += 1
print(tot, n)
def fib(n):
如果n==0:
返回1
elif n==1:
返回2
其他:
返回fib(n-1)+fib(n-2)
tot=0
n=0
而fib(n)
这将检查奇数值,因为偶数模(%)2为0
另外,您计算了三次fib(n)
。我想做点什么。谢谢你的回复!我忘了“偶数”是什么意思了,抱歉浪费了你的时间强>
我还改进了我的代码
tot = 0
a = 1
b = 1
h = 0
while h <= 4000000:
if h % 2 == 0:
tot += h
a = b
b = h
h = a + b
print(tot)
tot=0
a=1
b=1
h=0
当h不是奇数求和吗?你为每一个n
计算三次fib(n)
,保持它最优化。@Arman-Uh。。。事实上,与他们的实际使用频率相比,三次是非常好的。你的结果4613731是奇数应该是一个线索…@ubadub,因为他们认为他们是对偶数求和,而偶数之和是偶数。所以当他们看到一个奇数和时,他们应该意识到他们不是对偶数值求和。
tot = 0
a = 1
b = 1
h = 0
while h <= 4000000:
if h % 2 == 0:
tot += h
a = b
b = h
h = a + b
print(tot)