C言語なら俺に聞け(入門篇) Part 14
■ このスレッドは過去ログ倉庫に格納されています
0533デフォルトの名無しさん
2007/06/20(水) 22:14:43まず、階乗とはどういうものか。
N! = N × (N-1) × (N-2) × …… × 2 × 1
と考える? いや、こう考える事もできる。
N! = N × (N-1)!
しかし、これは N が 0 の場合には成り立たない。(註: 0! は 1 であると定義されている)
(-1)! なんて定義されてないからだ。
じゃあ、こうしてしまおう。
N! = N × (N-1)!
ただし、N が 0 の時は N! = 1
OK。これが階乗だ。
次に、階乗の部分を関数で書いてみよう。
関数名は factorial とでもしよう。
factorial(N) = N × factorial(N-1)
ただし、N が 0 の時は factorial(N) = 1
で、これを C 風に書き直してみよう。
int factorial(int n) { return n == 0 ? 1 : n * factorial(n - 1); }
これで完成だ。
無理に処理の流れを考えようとするからハマる。
factorial という別の完成された関数があると考えて、
それを利用しているのと同じように考えればいい。基本的にはね。
■ このスレッドは過去ログ倉庫に格納されています