科目B
基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問7
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 factorial は非負の整数 n を引数にとり,その階乗を返す関数である。非負の整数 n の階乗は n が 0 のときに 1 になり,それ以外の場合は 1 から n までの整数を全て掛け合わせた数となる。
〔プログラム〕
○整数型: factorial(整数型: n)
if (n = 0)
return 1
endif
return
答えを選ぶ
出典:基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問7(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:カ
覚える知識
階乗の再帰的定義(n×F(n−1))
階乗は n!=n×(n−1)!、0!=1 と再帰的に定義でき、そのまま再帰関数として書ける。
この問題で必要なこと
n!=n×(n−1)! で、0!=1 が終了条件。return n × factorial(n − 1) とすればカが正解。
ひっかけ
factorial(n) を自分自身で呼ぶと終わらない(ア)。n を掛け忘れる(イ)、2 項だけ掛ける(エ)といった定義の読み違いを誘う。