准フィボナッチ数列
十進BASIC_算数 へ戻る
大学生のための数学 へ戻る
2013.09.26


( 問 題 )
  碁石を一列に並べます。 黒が隣同士にならないようにするには何通りあるでしょうか?
1個並べるとき、 2個並べるとき、 3個並べるとき、 4個並べるとき、 5個並べるとき、 6個並べるとき、 のそれぞれについて求めなさい。


( 解 答 )
次のような十進BASIC のプログラムを作って実行すると答えがでます。

答えを数列にすると、 次のようになります。
    2  3  5  8  13  21

  これは准フィボナッチ数列です。 項の値は、 前項とその前の項を加えたものになっています。 その理由を考えてみましょう。

  黒が隣同士にならないよう n 個 の碁石を一列に並べるすべての場合の数を S とします。 n 個 の碁石を左から右へ一つずつ一列に置いていくものとします。 n 番目に置く石が白である場合は、 黒が隣同士にならないよう n 個 の碁石を一列に並べる場合の数は、 Sn−1 になります。 なぜなら、 n−1 番目に置く石は白でも黒でもどちらでもいいので。 n 番目に置く石が黒である場合は、 黒が隣同士にならないよう n 個 の碁石を一列に並べる場合の数は、 Sn−2 になります。 なぜなら、 n−1 番目に置く石は白でなければならず、 n−1 番目に置く石が白である場合は、 黒が隣同士にならないよう n−1 個 の碁石を一列に並べる場合の数は、 Sn−2 になるからです。 したがって、 S は Sn−1 と Sn−2 を加えたものになります。

  したがって、 次のような漸化式のプログラムを作って実行しても答えがでます。

  准フィボナッチ数列の例としては音符に関するものもあります。 それにつきましては、 十進BASIC_プログラミング > 漸化式の作り方 をご覧ください。