我正在编写代码以查找斐波那契数列中不超过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