我正在编写代码以查找斐波那契数列中不超过400万的偶值项之和。该代码适用于最大40k的值,但出现内存错误,无法找到400万,有人可以帮助我解决问题

我的代码是:

def fib(x):
    l=[0,1]
    m=[]
    a=0
    c=0
    b=1
    while len(l) <=x:
             d=c+b
             c=b
             b=d
             l.append(d)
             if d%2==0:
                    m.append(d)
                    a=a+d
    print
    print a
    print m

最佳答案

据我了解,我只是想澄清一下:您正在寻找一个函数,该函数返回斐波那契数列中所有偶数之和,最大为400万。尝试使用两个类似的单独功能。

斐波那契数列中给定数字的第一个函数:

    def fib(n):
        a = 0
        b = 1
        for e in range(n):
            old_a = a
            a = b
            b = old_a + b
        return a


求和的第二个函数调用较早的函数(并使用一个计数而不是一个列表,以节省内存):

    def even_sum(t):
        total = 0
        for x in range(t):
            fib_x = fib(x)
            if fib_x % 2 == 0:
                total += fib_x
                print fib_x     # <-- this line is optional,
                                # include it if you want to see each
                                # even number printed.
        return total


然后调用您的函数。例如:

print even_sum(100)

这给了我们这个答案:

286573922006908542050

08-18 08:40
查看更多