コース: 試験対策:基本情報技術者試験 データ構造とアルゴリズム
無料トライアルでこのコースを視聴する
今すぐ登録して、24,700件以上登録されている、業界エキスパート指導のコースを受講しましょう。
再帰で階乗値を求める
再帰の例でよく取り上げられるのは、 階乗値を求める問題です。 再帰構造を理解するために、 まずは階乗値を再帰で求めてみましょう。 階乗はループで求める方が簡単ですが、 仕組みが分かりやすいので、 再帰を説明するときに よく例としてあげられます。 例えば、5の階乗は、 5×4×3×2×1ですが、 5×4の階乗に書き換えることができます。 同様に、4の階乗は、 4×3の階乗に書き換えることができ 3の階乗は3×2の階乗に、 2の階乗は2×1の階乗に 書き換えることができます。 つまり n>1 の場合、 n の階乗は n×(n-1) の階乗に 書き換えることができます。 そして n=1 の場合には、 1になります。 このようにして 同じ処理を繰り返す場合には、 再帰を使うことができます。 では、ソースコードを確認してみましょう。 これは、疑似言語で記述した 階乗を再帰で処理する fact 関数のコードです。 例えば、3の階乗を求めるには、 引数に3を設定して fact 関数を呼び出します。 すると、n は3なので、 if 文の条件 n>1は真になり、 fact(n-1) つまり 引数に2を設定して fact を呼び出します。 すると n は2なので、 n>1 は真になり、 fact(n-1)、 つまり引数を1に設定して fact を呼び出します。 ここで、n は1なので n>1 が偽になり、 retuen1 で1を返却します。 すると n は2なので、 return n×1 で2を返却します そしてここでは、n は3なので、 return3×2で6を返却します。 これで3の階乗の6が求まります。 再帰とは、単に自分自身と 同じ処理を呼ぶだけだということが 理解できたと思います。 1から n までの 総和を求める問題なども、 再帰で書くことができます。 ぜひ挑戦してみましょう。