首页 > 解决方案 > 偶数项以斐波那契计算,限制为 400 万

问题描述

def fib(n):
   if n<= 1: 
       return n 
   else: 
       return(fib(n-1)+fib(n-2))

def comp():
   L=[]
   for i in range(1,4000000): 
        if i % 2 ==0:
           L.append(fib(i))
           return sum(L)
print(comp())

这段代码有什么问题?它没有返回任何东西,但在我看来它看起来不错。

标签: pythonfibonacci

解决方案


return语句设置为错误的增量。它在第一次执行时i % 2 == 0变为真(在您的情况下是 i == 2)。

def fib(n):
   if n<= 1: 
       return n 
   else: 
       return(fib(n-1)+fib(n-2))

def comp():
   L=[]
   for i in range(1,4000000): 
        if i % 2 ==0:
           L.append(fib(i))
   return sum(L)

print(comp())

但是,上面的代码不起作用。你知道这个数字会有多大吗?

尝试

for i in range(1,40): 

作为一个开始。在我的机器上花了好几秒钟。结果是 63245985。


推荐阅读