【问题标题】:Writing Fibonacci Sequence Elegantly Python用 Python 优雅地编写斐波那契数列
【发布时间】:2019-01-18 00:23:29
【问题描述】:

我正在尝试通过以多种方式编写函数来提高我的编程技能,这教会了我编写代码的新方法,同时也了解了其他人编写代码的风格。下面是一个计算斐波那契数列中所有偶数之和直至最大值的函数。你有什么建议以不同的方式编写这个算法,也许更紧凑或更 Pythonic?

def calcFibonacciSumOfEvenOnly():
    MAX_VALUE = 4000000
    sumOfEven = 0
    prev = 1
    curr = 2


    while curr <= MAX_VALUE:
        if curr % 2 == 0:
            sumOfEven += curr

        temp = curr
        curr += prev
        prev = temp

    return sumOfEven

我不想递归地编写这个函数,因为我知道它会占用大量内存,即使它写起来很简单。

【问题讨论】:

    标签: function python-2.x fibonacci


    【解决方案1】:

    您可以使用生成器生成斐波那契数列的偶数,直到给定最大值,然后获得生成的数字的总和:

    def even_fibs_up_to(m):
        a, b = 0, 1
        while a <= m:
            if a % 2 == 0:
                yield a
            a, b = b, a + b
    

    这样:

    print(sum(even_fibs_up_to(50)))
    

    将输出:44 (0 + 2 + 8 + 34 = 44)

    【讨论】:

    • 太棒了 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2013-02-24
    • 2014-05-23
    • 2015-06-05
    • 2022-01-14
    相关资源
    最近更新 更多