<問題>
入力された正の整数の階乗を求めるプログラムを作成せよ。(再帰を使わないで書いてみよう)
(0の階乗と1の階乗は1だけれども、0の階乗は今回、扱わないことにします。
<実行結果>
入力してください: 6
6の階乗:720
入力してください: 4
4の階乗:24
<ヒント> 5の階乗を求める1*2*3 .. 5と5*4*3 .. 1。どちらも書けるように。
回答プログラムには、intの最大値を表示するプログラムをつけておきます。
解答例 #include <stdio.h> #include <limits.h> int factorial (int); int factorial (int n) { int m = 1; /* 1*2*3 .. 5と計算する場合の回答は以下 int m = 1, j = 1; while (j <= n) { m = m * j; j++; } */ return m; } int main () { int i; printf("入力してください: "); scanf("%d", &i); printf("%dの階乗:%d¥n",i, factorial(i)); /* printf("intの最大値:10進%d 16進%x¥n",INT_MAX, INT_MAX); */ return 0; }