5

バックグラウンド

私はこの問題で立ち往生しています:

フィボナッチ数列の新しい各項は、前の 2 つの項を追加することによって生成されます。1 と 2 から始めると、最初の 10 項は次のようになります。

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

値が 400 万を超えないフィボナッチ数列の項を考慮して、偶数値の項の合計を求めます。

問題が私のフィボナッチ数ジェネレーターなのか、偶数を取得するコードなのか、それとも数字を無駄に追加する方法なのかを調べようとしました。

コード

数値をリストに保存することにしました。ここでは、それらを作成します。

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リストに追加するコードを作成しました。これは、コードのもう 1 つの弱点です。

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

シーケンス内の次の 2 つの値の合計が 4,000,000 を超えると停止します。4,000,000までのシーケンス内のすべての値を考慮する必要があります。

于 2013-03-14T20:44:23.540 に答える