Sunday, January 25, 2009

Fibonatti最適化


   1  #!/usr/local/bin/ruby

   2  # encoding: utf-8

   3  def fib(n)

   4    case n

   5    when 0

   6      0

   7    when 1

   8      1

   9    else

  10      fib(n-2) + fib(n-1)

  11    end

  12  end

  13  

  14  

  15  def fibo2(a=0, b=1, n)

  16    if n == 0

  17      a

  18    else

  19      fibo2(a+b, a, n-1)

  20    end

  21  end

  22  

  23  range = 0..100

  24  t = Time.now

  25  p range.map { |i| fibo2 i } # => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

  26  p Time.now - t # =>

  27  t = Time.now

  28  p range.map { |i| fibo i } # => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

  29  p Time.now - t # =>

No comments: