amazon-web-services - "Python"中的欧拉计划#2

标签 amazon-web-services python fibonacci

我是这里的绝对初学者。我在 Python 中尝试了有关 Project Euler 的问题。您能指出我的代码哪里出错了吗?

Q) 斐波那契数列中的每一项都是通过添加前两项生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑斐波那契数列中值不超过四百万的项,找到偶数项的总和。

def fib(a):
    if ((a==0) or (a==1)):
        return 1
    else:
        return((fib(a-1))+(fib(a-2)))
    r=0
    sum=0
    while (fib(r))<4000000:
        if(((fib(r))%2)==0):
            sum+=fib(r)
            print(sum)

最佳答案

您的代码没有错误,只是太慢了。为了解决欧拉计划问题,您的代码不仅要正确,而且您的算法必须高效。

您的斐波那契计算非常昂贵 - 也就是说,递归地尝试在 O(2^n) 时间内运行下一个斐波那契数 - 当您想要对限制为 400 万的数字求和时,时间太长了。

Python中更高效的实现如下:

x = 1
y = 1
z = 0
result = 0

while z < 4000000:
   z = (x+y)         
   if z%2 == 0:
       result = result + z

   #next iteration

   x = y
   y = z

print result

关于amazon-web-services - "Python"中的欧拉计划#2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258545/

相关文章:

web-services - 具有公共(public)和私有(private)子网、s3 端点的 VPC

amazon-web-services - 在EKS(AWS kubernetes)上将JHub入口流量列入白名单的好方法?

amazon-web-services - 防止 AWS cloudformation 中的回滚

node.js - DynamoDB - 获取不起作用

python - 使用条件语句处理 Pandas 中的 NaN 值

c++ - 我的递归斐波那契程序有什么问题?

Python - 信号量获取可以从特定线程解锁吗?

python - 如何避免 numpy 数组中的 'for' 循环

java - 打印字符串而不是斐波那契数

list - 理解递归定义的列表(用 zipWith 表示的 fibs)