#/*********************************************************** # fib.rb -- Fibonacci (フィボナッチ) 数列 #***********************************************************/ def fib1( n ) return ((1 + Math::sqrt(5)) / 2)** n / Math::sqrt(5) + 0.5 end def fib2( n ) a = 1; b = 1; c = 0; x = 1; y = 0; n -= 1 while (n > 0) if (n % 2) == 1 x1 = x; y1 = y x = a * x1 + b * y1; y = b * x1 + c * y1 end n /= 2 a1 = a; b1 = b; c1 = c a = a1 * a1 + b1 * b1 b = b1 * (a1 + c1) c = b1 * b1 + c1 * c1 end return x end a = 1; b = 0 while (a < 100) printf(" %d", a) t = a + b; b = a; a = t end printf("\n") a = 1; b = 0 while (a < 100) printf(" %d", a) a += b; b = a - b end printf("\n") for i in 1..11; printf(" %d", fib1(i)); end printf("\n") for i in 1..11; printf(" %d", fib2(i)); end printf("\n") exit 0