5

背景

我被困在这个问题上:

斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。

我试图找出问题是否是我的斐波那契数生成器,获得偶数的代码,甚至是我添加数字的方式都无济于事。

代码

我决定将数字存储在列表中。在这里,我创造了它们。

list_of_numbers = [] #Holds all the fibs
even_fibs = [] #Holds only even fibs

然后,我创建了我的生成器。这是一个潜在的问题领域

x,y = 0,1 #sets x to 0, y to 1
while x+y <= 4000000: #Gets numbers till 4 million
    list_of_numbers.append(y)
    x, y = y, x+y #updates the fib sequence

然后,我创建了一些代码来检查一个数字是否为偶数,然后将其添加到even_fibs列表中。这是代码中的另一个弱点。

coord = 0
for number in range(len(list_of_numbers)):
    test_number = list_of_numbers [coord]

    if (test_number % 2) == 0:
        even_fibs.append(test_number)
    coord+=1

最后,我显示信息。

print "Normal:  ", list_of_numbers #outputs full sequence
print "\nEven Numbers: ", even_fibs #outputs even numbers
print "\nSum of Even Numbers:  ", sum(even_fibs) #outputs the sum of even numbers

问题

我知道这是一种很糟糕的提问方式,但有什么问题呢?请不要给我答案 - 只需指出有问题的部分。

4

1 回答 1

4

当序列中接下来的两个值的总和大于 4,000,000 时,您将停止。您应该考虑序列中不超过 4,000,000 的所有

于 2013-03-14T20:44:23.540 回答