ここにはi, i = 27, 28, 29, 30
の計算値があります。リコールlimit #=> 4_000_000
。 i
は30
に等しいとき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.
これは、スタックオーバーフロー規則によって
...示し、問題は内部の問題を示すために必要な最小限の例で、自給自足可能な限りする必要があります質問自体。リンクは単なるボーナスです。将来的にはそれを念頭に置いてください。 – Amadan
あなたを助ける人々の時間を尊重してください。あなたのコードは、読んで理解するのができるだけ簡単でなければなりません。これは、記述識別子の名前( 'a'、' b'、 'c'ではなく)と無効なデバッグコードが削除されたことを意味します。さらに、大きな整数を参照する場合は、4_000_000や3_524_578など、コードやドキュメントにアンダースコアを使用すると便利です。 –
(私の前のコメントについては、Rubyでは数値定数にアンダースコアを使用することは合法です。) –