Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:
1,2,3,5,8,13,21,34,55,89,......
通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。
我的程序打印4613731,但它应该是4613732.问题出在哪里?
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)
答案 0 :(得分:2)
if fib(n) % 2 != 0:
tot += fib(n)
这检查奇数值,因为偶数mod(%)2是0
此外,您还要计算fib(n)
三次。可能想做点什么。
答案 1 :(得分:1)
谢谢你的回复!我忘记了甚至&#39;甚至&#39;意思是,抱歉浪费你的时间! 我还改进了我的代码,
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)
答案 2 :(得分:-1)
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)