2016年2月25日木曜日

160225(2)

Ruby


隣り合う階乗の和(2)

1 / (0! + 1!) + 1 / (1! + 2!) + 1 / (2! + 3!) + … + 1 / ((n - 1)! + n!) = 1 - 1 / (n + 1)! ①
が成り立つ。
証明は次の通り。

n = 1 のとき、1 / 2 = 1 - 1 / 2!
より、①は正しい。
n = k のとき、①が正しいと仮定すると、
1 / (0! + 1!) + 1 / (1! + 2!) + … + 1 / (k! + (k + 1)!)
= (1 - 1 / (k + 1)!) + 1 / ((k + 2)k!)
= 1 + (- (k + 2) + (k + 1)) / (k + 2)!
= 1 - 1 / (k + 2)!
となり、n = k + 1 のときも①が正しい。
よって、①が成り立つ。

さて、Ruby で計算すると次のようになる。

def f(n)
  return 1 if n == 0
  (1..n).inject(:*)
end

def g(n)
  f(n - 1) + f(n)
end

def h(n)
  (1..n).inject(0){|s, i| s += 1r / g(i)}
end

(1..20).each{|i| p h(i)}

出力結果
(1/2)
(5/6)
(23/24)
(119/120)
(719/720)
(5039/5040)
(40319/40320)
(362879/362880)
(3628799/3628800)
(39916799/39916800)
(479001599/479001600)
(6227020799/6227020800)
(87178291199/87178291200)
(1307674367999/1307674368000)
(20922789887999/20922789888000)
(355687428095999/355687428096000)
(6402373705727999/6402373705728000)
(121645100408831999/121645100408832000)
(2432902008176639999/2432902008176640000)
(51090942171709439999/51090942171709440000)

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。