基本情報技術者試験の科目Bのサンプル問題を題材に,階乗を求める処理について学習します。この問題では,階乗の計算方法と,その計算をプログラムで表す方法を確認します。
(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問7
問 次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 factorial は非負の整数 n を引数にとり,その階乗を返す関数である。非負の整数 n の階乗は n が 0 のときに 1 になり,それ以外の場合は 1 から n までの整数を全て掛け合わせた数となる。
〔プログラム〕
○整数型: factorial(整数型: n)
if (n = 0)
return 1
endif
return
解答群
| ア (n - 1) × factorial(n) | イ factorial(n - 1) |
| ウ n | エ n × (n - 1) |
| オ n × factorial(1) | カ n × factorial(n - 1) |
【解答】カ
【解説】
階乗は,n! = n × (n - 1)! と表すことができる。例えば,4! は,4 × 3!,3! は 3 × 2! のように,1つ小さい数の階乗を使って表すことができる。この関係をプログラムで表すと,n が0でない場合は,n × factorial(n - 1) となる。factorial(n - 1) は,関数 factorial が自分自身を呼び出しているため,このような処理を再帰処理という。
一方,0の階乗は 0! = 1 なので,n が0になったら 1を返して処理を終了する。この条件が,再帰処理を終了するための終了条件となる。したがって,空欄には n × factorial(n - 1) が入る。
たとえば,factorial(4) の実行結果は,次のとおりである。
この問題のポイント
この問題から学べることは,
- 階乗の計算方法
- 階乗の計算をプログラムで表す方法
- n × factorial(n - 1) のように,1つ小さい値の階乗を利用して計算する方法
- 再帰呼出しによる処理の流れ
です。特に,階乗の計算方法と,その計算をプログラムで表す方法を理解しておきましょう。
基本情報技術者試験の学習におすすめの参考書
基本情報技術者試験の合格を目指す方におすすめの参考書です。
学習のお役に立ちましたら
この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。
よろしければ、このサイトを応援いただけますと嬉しいです。
※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。


