フィボナッチ数列

更新日:

用語解説

フィボナッチ数列は、F0=0F_0=0F1=1F_1=1とし、n2n\ge2Fn=Fn1+Fn2F_n=F_{n-1}+F_{n-2}と定める数列です。0、1、1、2、3、5、8、…と続きますが、F1=1F_1=1F2=1F_2=1から始める添字流儀もあります。

■ 試験で押さえるポイント

  • 各項は直前二項の和なので、値だけでなく初期条件と添字を確認します。F0始まりならF10=55F_{10}=55です。

  • 定義どおりの単純な再帰実装は同じ部分問題を何度も計算し、呼出し数が指数的に増えます。メモ化又は反復DPなら時間O(n)O(n)、追加領域O(1)O(1)でも計算できます。

  • 行列[1110]\begin{bmatrix}1&1\\1&0\end{bmatrix}の累乗や高速ダブリングを使うとO(logn)O(\log n)段階で計算でき、大きなnでは多倍長整数や剰余計算が必要です。

  • 連続項の比Fn+1/FnF_{n+1}/F_nはnが大きいと黄金比(1+5)/2(1+\sqrt5)/2へ近づきます。閉形式は丸め誤差に注意します。

■ 選択肢での判断ポイント

漸化式・初期値・添字、単純再帰とDPの計算量差が頻出です。同じ結果でもアルゴリズム効率が大きく異なります。

例: F0=0F_0=0F1=1F_1=1から、F2=1F_2=1F3=2F_3=2F4=3F_4=3F5=5F_5=5F6=8F_6=8と、前二項を一度ずつ足して求めます。

同じ分野の用語