找到斐波那契级数的Python程序。更像Python的方式

2024-05-16 15:54:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中还有另一个讨论Fibo系列的线程。这是为了将代码调整为更像Python的代码。How to write the Fibonacci Sequence in Python

我喜欢这个程序,我写的解决项目欧拉二季度。我正在用Python编写新的代码,每次我用Python的方式编写代码时都会很高兴!你能推荐一种更好的Python疗法吗?

Project Euler Q2。求斐波那契数列中所有不超过四百万的偶数项之和。

fib=[]
def fibo(a=-1,b=1,upto=4000000):
    if a+b>=upto:
        return
    else:
        a,b=b,a+b
        fib.append(b)
        fibo(a,b)

fibo()
even=[i for i in fib if not i%2]
print sum(even)

Tags: theto代码inif线程fibonaccihow
3条回答

首先,我建议在计算术语时对其进行求和,而不是将其存储在数组中,然后对数组进行求和,因为除了将它们相加之外,不需要对单个术语进行任何处理。(这在任何语言中都是很好的计算能力)

首先,我将fibo()作为生成器:

def fibo(a=-1,b=1,upto=4000000):
    while a+b<upto:
        a,b = b,a+b
        yield b

然后我也会选择作为一个生成器,而不是列表理解。

print sum(i for i in fibo() if not i%2)

使用生成器是一种在保留内存的同时生成长序列的方法:

def fibonacci():
  a, b = 0, 1
  while True:
    yield a
    a, b = b, a + b

import itertools
upto_4000000 = itertools.takewhile(lambda x: x <= 4000000, fibonacci())
print(sum(x for x in upto_4000000 if x % 2 == 0))

相关问题 更多 >