python中查找偶数Fibonacci数和的代码的内存错误

2024-05-01 21:53:44 发布

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

我写的代码是用来寻找值不超过4的斐波那契数列的偶数项之和百万代码对于高达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

Tags: 内存代码lenifdef错误偶数print
3条回答

如评论中所说,用计数器代替l。如果需要打印所有偶数fib数字,请保留m,否则将其全部删除。在

初始化计数

count = 2

每次while循环的计数都增加1。在

我只想澄清一下:您正在寻找一个函数,它返回fibonacci序列中所有偶数的和,最多400万。用这样两个不同的函数试试。在

fibonacci序列中给定数字的第一个函数

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

第二个函数调用前面函数的和(并使用计数,而不是列表,以便节省内存。)

^{pr2}$

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

print even_sum(100)

这给了我们这个答案:

286573922006908542050

试试这个:

def sum_fib(x):
    a = 0
    c = 0
    b = 1
    l = 2
    while l <=x:
             d = c + b
             c = b
             b = d
             l += 1
             # yoda conditions check
             if 0 == d % 2: # using binary should be faster (0 == d & 1)
                    a += d
    print 
    print a 

相关问题 更多 >