【问题标题】:Even valued terms sum in fibonacci, limit is 4 million偶数项以斐波那契计算,限制为 400 万
【发布时间】:2020-01-15 12:44:01
【问题描述】:
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())

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

【问题讨论】:

标签: python fibonacci


【解决方案1】:

你应该从函数返回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())

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

【讨论】:

  • 谢谢!它有效,但对于大数字来说确实很慢。
【解决方案2】:

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。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2021-12-21
  • 2011-02-04
相关资源
最近更新 更多