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
语句设置为错误的增量。在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。
您应该从函数而不是从for循环返回sum(L)
,请遵循以下代码
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())
和其他东西过多地看待它的范围,因为这会花费一些时间或可能会产生任何与内存相关的错误,因此请减少进行测试。