タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

fibに関するtakkawのブックマーク (1)

  • O(log n)でフィボナッチ数を求める - 趣味的にっき

    O(log n)でフィボナッチ数のN番目を求める方法をRubyで実装してみました。この間のSICP勉強会で教えてもらったやつです。 まず普通のフィボナッチ数。こいつはO(n)です。 def fib1(n) a, b = 0, 1 n.times do a, b = a + b, a end a end O(log n)版のフィボナッチ数。なんでこれでフィボナッチ数が求められるかは、ここを参照してください。ちなみにRubyのMatrixの**は、O(log n)で実装されています。 require 'matrix' def fib2(n) a = Matrix[[1, 1], [1, 0]] b = Matrix[[0], [1]] (a ** n * b)[0, 0] end こんな感じでベンチマークをとってみました。 require 'benchmark' n = 100_000 Ben

    O(log n)でフィボナッチ数を求める - 趣味的にっき
    takkaw
    takkaw 2008/11/08
    驚きの早さ
  • 1