ハッシュによる美しいメモ化(Ruby)

qiita.com元ネタはこれです。
 
Ruby のハッシュにはこのようなデフォルトの与え方があります。

h = Hash.new {|hash, key| hash[key] = default}

 
これを利用して、こんな風にフィボナッチ数列をメモ化で計算できます。

fib = Hash.new do |hash, n|
  hash[n] = if n == 0 or n == 1
    n
  else
    hash[n - 1] + hash[n - 2]
  end
end

fib[100]    #=>354224848179261915075

おお、すばらしい…。