ソフトウェア開発技術者試験 |
2001年度 = 平成13年度 |
午前 |
問12 |
fact(n)は、非負の整数nに対してnの階乗n!を返す。fact(n)の再帰的な定義はどれか。
ア if (n = 0) then return 0 else return n * fact(n - 1);
イ if (n = 0) then return 0 else return n * fact(n + 1);
ウ if (n = 0) then return 1 else return n * fact(n - 1);
エ if (n = 0) then return 1 else return n * fact(n + 1);
ア
整数nの階乗は以下のように再帰的に定義されます。
(a) 0! = 1
(b) n > 0ならば n! = n × (n - 1)!
たとえば、10の階乗である10!は、(b)によって
10! = 10 × 9!
と求めることができます。もちろん、右辺の9!は、
9! = 9 × 8!
によって得られます。一般的に表現するために、nの階乗を求める手続きをfact(n)とすると、10!および9!は、次のようになります。
10! = 10 × fact(9)
9! = 9 × fact(8)
すなわち、nが0より大きいときのfact(n)は、nとfact(n - 1)を掛け合わせたものです。