再帰、フィボナッチ数列
さてさて、今回もアルゴリズムの基礎を説明していきます。
今回は再帰という物について学びます。
まず再帰というのは、例えばn次のものを定義する為に
n−1次のものを用い、それを定義する為に
n−2次のものを用います。
このようにより低次のものを用いて定義するような構造を
再帰といいます。
さて再帰の練習問題として、フィボナッチ数列というものがあります。
フィボナッチ数列というのはフィボナッチさんが発見しました。
具体的な例として、
1 1 2 3 5 8 13 21 34 55 89 143・・・
というような数列をいいます。
第n項を求めるには第n−1項と第n−2項を加えたものであります。
さて、このようなフィボナッチ数列を再帰を使って求めてみましょう。
以下がメインのプログラムです。
function fibonacci % % フィボナッチ数列(メイン) % % for i = 1 : 20 f=fib(i); fprintf('%2d: %1d\n',i,f); end |
function f=fib(i) % % フィボナッチ数列(処理) % % if i <= 2 f=1; else f=fib(i-1)+fib(i-2); end |
1: 1 2: 1 3: 2 4: 3 5: 5 6: 8 7: 13 8: 21 9: 34 10: 55 11: 89 12: 144 13: 233 14: 377 15: 610 16: 987 17: 1597 18: 2584 19: 4181 20: 6765 |