faster fibonacci ― 2010/09/10
最も簡単に fib を高速化する方法 - ドレッシングのような 二つ値を返せば良いんですよ。メモ化なんてしなくていい。
末尾再帰的(ってことで良いのかな?)アイディアは素晴しいと思うけど、
fib = Hash.new{|h, k| h[k] = k < 3 ? 1 : h[k-1] + h[k-2]} p fib[1000]
が"最も簡単"かどうかはさておき、"最も簡潔"な解法でないかと思います。
Ruby会議2010のto_rubyのセッションで教わった手法です。
Hash.newに与えたブロックの評価されるタイミングがポイントで、 理論的にはキャッシュ版と同じ動作になります。
速度的にも問題ありませんし、Golf的にも結構イケてます。
(あなごるでは、どうも解答埋め込みには勝てないっぽけど……)
最近のコメント