暑中残暑お見舞い申し上げます。 この記事書き始めた頃は暑中だったのに色々あって立秋過ぎちゃった。 さておき、前回予告した、「フィボナッチ数を求めるための末尾再帰」について。 おさらい …フィボナッチ数 詳細は、前回の記事とか、適当にググってみたりとかしてください。 簡単に言うと、 で定義される数列で、例えば def fib n return n.even? ? -fib(-n) : fib(-n) if n < 0 # for negative n a, b = 0, 1 n.times { a = b + b = a } a end こんな関数(メソッド)を書くと一般の n 番目のフィボナッチ数を求められます。 ちなみに最初の方を列挙すると以下の通り。 (0, )1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 末尾再帰について少しだけ 一般に関数