2015年7月12日日曜日

フィボナッチ数列

フィボナッチ数列を書いてみました。
Hashのnewの時に渡したblockは、Hashにキーがまだ含まれていないときの初期値を定義します。
これを利用してみました。
case - when 式も練習してみました。

h = Hash.new do |hash, key|
  hash[key] = case key
              when 0 then 0
              when 1 then hash[0] = 0 unless hash.has_key?(0); 1
              else hash[key-1] + hash[key-2]
              end
end

puts h[100]
p h.values

$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-darwin14.4.0]

class Hashによると、「ハッシュに含まれる要素の順序が保持されるようになりました。 ハッシュにキーが追加された順序で列挙します。」とのことなので、h.valuesで順番通りのArrayインスタンスが得られています。


0 件のコメント:

コメントを投稿