def fibon(maxItem):
if maxItem<=1:
return 1
else:
return fibon(maxItem- 1)+fibon( maxItem- 2)
if __name__ == "__main__":
i=1
l = []
val = fibon(i)
while 4000000 > val:
l.append(val)
i+=1
val = fibon(i)
print sum([x for x in l if x %2==0])
此方法不仅代码繁杂,而且执行速度也很慢
方法二:
def fibon2():
a=b=1
sum =0
while b < 4000000:
b = a+b
a = b-a
if a%2==0:
sum +=a
print sum
方法三:
def fibon3():
lastValue =2
lastSecondValue=1
newValue=0
sum = 2
while newValue<4000000:
newValue = lastValue+lastSecondValue
if newValue % 2 ==0:
sum += newValue
lastSecondValue = lastValue
lastValue = newValue
print sum
补:不用递归,求指定项的值
def fibon4(index):
last= lastSecond = newValue = 1
for i in range(2 ,index):
newValue = lastSecond+last
lastSecond = last
last = newValue
return newValue