平成29年度秋期 応用情報技術者試験 午前 問7

分野:アルゴリズムとプログラミング|実際に出題されたIPA過去問題

fact (n) は,非負の整数 n に対して n の階乗を返す。fact (n) の再帰的な定義はどれか。

  1.  if n=0 then return 0 else return n×fact (n−1)
  2.  if n=0 then return 0 else return n×fact (n+1)
  3.  if n=0 then return 1 else return n×fact (n−1)
  4.  if n=0 then return 1 else return n×fact (n+1)
解答・解説を見る

正解:ウ

AI解説

階乗はn!=n×(n−1)!という漸化式と、基底条件0!=1で再帰的に定義される。n=0のとき1を返し、それ以外はn×fact(n−1)と引数を小さくしながら自分自身を呼び出すウが正しい。再帰定義は「基底条件の値」と「再帰呼出しが基底に近づくか」の2点を確認する。 ア: 基底値が0だと、展開の最後で0が掛けられ全ての結果が0になってしまい階乗を計算できない。 イ: 基底値が0である上に、fact(n+1)では引数が増え続けて基底条件に到達せず、再帰が停止しない。 ウ: 正解。0!=1を基底とし、n×fact(n−1)で正しく縮小していく再帰定義である。 エ: 基底値1は正しいが、fact(n+1)では引数が増え続けて停止しない。 💡 再帰関数の正誤判定は「基底条件の戻り値は正しいか」「再帰呼出しごとに必ず基底へ近づくか」の2点チェックで機械的に解ける。0!=1は必須知識。

出典:平成29年度 秋期 応用情報技術者試験 午前 問7 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング)の過去問