|
サムおじさんの豚の歌で歌われていた数字は、フィボナッチ数列と言う
1と1を最初の項とし、3項以降は直前の2つの項の和になる数列で、 1, 1, 2, 3, 5, 8, 13, ...と続きます。 隣り合う項の比が特定の比率(黄金比)に近づくという特徴があるため、 殿下の黄金比に関して語るときにも、モニカが口走っていました。 8 : 13 = 1 : 1.625 またプログラミングにおける再帰性の美しさを語るうえで最適な題材です。 フィボナッチ数列は次のように定義されます。 F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2) (n ≥ 2) F(n)を得るには、まずF(n-1)とF(n-2)を計算する必要があり、 F(n-1)を求めるためには、F(n-1-1)とF(n-1-2)・・・のように更に小さく分割されます。 これこそ再帰の本質「自己参照」に他なりません。 関数は自分自身を呼び出し続け、最終的に基本ケースF(0)やF(1)に到達し、そこから値が積み重なって戻ってきます。 もしこれが魔術であれば、”モニカもニッコリ”な必要な分割と言えるでしょう ただ問題なのは計算量が多い事です。 今回はサーバー負荷に日和って値の制限をさせていただきました。 わざわざ計算させずに数値に対して決まった値を出力する方が楽ちんなのですが、 それをするとモニカは怒りそうですね。 |