STEP 4.1a


<問題>

入力された正の整数の階乗を求めるプログラムを作成せよ。(再帰を使わないで書いてみよう)
(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);

/* 1*2*3 .. 5と計算する場合の回答は以下
int factorial (int n) {
    int m = 1, j = 1;

    while (j <= n) {
        m = m * j;
        j++;
    } 

    return m;
}





/* 5*4*3.. 1と計算する場合は以下 */
/*
int factorial (int n) {
    int m = 1;

    while (1 <= n) {
        m = m * n;
        n--;
    }

    return m;
}
*/

int main (void) {
    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;
}