応用情報技術者試験 平成29年度秋期 午前 問7「fact (n) は,非負の整数 n に対して n の階乗を返す。fact (n…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約49%です。
ウ. if n=0 then return 1 else return n×fact (n−1)
正答率 48.7%(1,098人中 535人が正解)
階乗は n!=n×(n−1)×…×1 で,数学上 0!=1 と定義される。再帰で定義するには『n が 0 のとき1を返す(終了条件)』と『それ以外は n×fact(n−1) を返す(自分自身を引数を1減らして呼ぶ)』の2点が必要である。終了条件で1を返し,かつ引数を減らして再帰するウが正しい。0を返すと結果全体が0になり,引数を n+1 と増やすと終了せず無限再帰になる。