2016-05-19 4 views
-2

を働いていない[i]は%2 == 0が私のGithub https://github.com/kuanhsuh/projecteuler/blob/master/2redo.rbプロジェクトオイラーQ.2ルビー[i]はここ

へのリンクの場合、私の質問は、ライン26である:

c << a[i] if a[i] % 2 == 0 

このメソッドは、フィボナッチシーケンスの最後の偶数を無視します。理由はわかりません。

私の配列Aは3524578であり、これは配列Cにプッシュされるべきですが、プッシュされません。

私は29行目でselectメソッドを使用しています。正常に動作します。 26行目のコードがどうしてうまくいかないのですか?ありがとう

+0

...示し、問題は内部の問題を示すために必要な最小限の例で、自給自足可能な限りする必要があります質問自体。リンクは単なるボーナスです。将来的にはそれを念頭に置いてください。 – Amadan

+0

あなたを助ける人々の時間を尊重してください。あなたのコードは、読んで理解するのができるだけ簡単でなければなりません。これは、記述識別子の名前( 'a'、' b'、 'c'ではなく)と無効なデバッグコードが削除されたことを意味します。さらに、大きな整数を参照する場合は、4_000_000や3_524_578など、コードやドキュメントにアンダースコアを使用すると便利です。 –

+0

(私の前のコメントについては、Rubyでは数値定数にアンダースコアを使用することは合法です。) –

答えて

0

ここにはi, i = 27, 28, 29, 30の計算値があります。リコールlimit #=> 4_000_000i30に等しいときcが更新されない理由を

i #=> 27 
a[27] + a[28] #=> 514_229 + 832_040 #=> 1_346_269 < 4_000_000 #=> true # so continue 
c.last #=> 196_418 #=> unchanged 
b #=> 1_346_269 
a #=> [..., 514229, 832040, 1346269] 

i #=> 28 
a[28] + a[29] #=> 832040 + 1346269 #=> 2178309 < 4000000 #=> true, so continue 
c.last #=> 832_040 # c.last changes 
b #=> 2_178_309 
a #=> [..., 832040, 1346269, 2178309] 

i #=> 29 
a[29] + a[30] #=> 1346269 + 2178309 #=> 3524578 < 4000000 #=> true, so continue 
c.last #=> 832_040 # unchanged 
b #=> 3_524_578 
a #=> [..., 1346269, 2178309, 3524578] 

i #=> 30 
a30 + a31 #=> 2178309 + 3524578 #=> 5702887 < 4000000 #=> false, so stop. 

これは、スタックオーバーフロー規則によって

+0

ありがとうございました! –

関連する問題