斐波那契偶数项总和,上限为 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())
其他的看范围太多了,因为这需要一些时间或者可能产生任何内存相关的错误,所以减少它以进行测试。
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())
其他的看范围太多了,因为这需要一些时间或者可能产生任何内存相关的错误,所以减少它以进行测试。