斐波那契偶数项总和,上限为 400 万

Even valued terms sum in fibonacci, limit is 4 million

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())

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

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.

你应该 return sum(L) 从函数而不是从 for 循环遵循下面的代码

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

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

print(comp())

其他的看范围太多了,因为这需要一些时间或者可能产生任何内存相关的错误,所以减少它以进行测试。