python - 偶数项以斐波那契计算,限制为 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())
这段代码有什么问题?它没有返回任何东西,但在我看来它看起来不错。
解决方案
该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。
推荐阅读
- jquery - 如何延迟加载光滑滑块的每张幻灯片?
- c# - xamarin 形式的单元测试 API 调用
- c# - MSDeploy 在远程服务器上部署 c# 控制台应用程序
- c# - 带有消息中心的 Xamarin 多个条目
- android - 获取调用上下文的父上下文
- python - 如何在 django 视图中设置 forms.ChoiceField 的值?
- google-cloud-platform - 无法激活“DV360 卖家 API”。一直提示“权限不足,无法查看该产品的启用状态”。
- java - 如何访问此 Java 对象中的这些属性
- python - 从 webscraper 清理表数据
- sql - 如何确定 T-SQL 中每周的工作时间总和?