最大値が 50000 などの最大値に達するまで、ルビーでフィボナッチ数列を生成したいと考えています。次のスニペットを書きました。
high = 50000
arr = [0, 1]
while arr.last < high do
arr.inject{|a, i| arr.push(arr[-2] + arr[-1])}
end
puts arr.last
これにより、プログラムが停止します。私は実際にはルビーに慣れていinject
ません。ルビーの同じステートメントで ifs と while に取り組む良い方法はありますか? 私が使用している上記の方法のより良いアプローチは何でしょうか。