基本情報トップに戻る
A難易度: 標準2026年度

基本情報技術者 予想問題A 第16問

問題

正の整数nの階乗n!を求めるプログラムの計算量はどれか。

選択肢

  1. 1ア O(1)
  2. 2イ O(n)
  3. 3ウ O(n^2)
  4. 4エ O(2^n)

正解

2. イ O(n)

詳しい解説を見る

解説

階乗n!は1×2×3×…×nという乗算の繰返しで求められ、ループ変数を1からnまで動かして順に掛ければ乗算の回数はn−1回である。処理回数が入力nに比例するため、計算量はO(n)となり、イが正解である。再帰関数で実装した場合も関数呼出しがn回発生するだけなので同じくO(n)である。アのO(1)は入力サイズによらず一定時間で終わる処理(配列の添字アクセスなど)、ウのO(n^2)は二重ループを伴う処理(単純なソートなど)、エのO(2^n)は組合せ爆発を起こす指数時間の処理に対応し、いずれも単純なループ1つで計算できる階乗には当てはまらない。基本情報技術者試験では、プログラムのループ構造から計算量のオーダを判定する問題が頻出であり、ループの重なりの数と計算量の対応(1重→O(n)、2重→O(n^2))を押さえることがポイントである。

一問一答

科目A 180問+科目B 60問

Aの関連問題

この調子で演習を続けよう

スキマ資格では基本情報の全2398問を分野別・難易度別に体系的に学習できます。基本情報技術者は科目A(広く浅く)と科目B(プログラミング・アルゴリズム)の両輪での対策が必要です。