■ 再帰を使わない階乗計算(平成16年午前問15)
#include <stdio.h>
/* 正の整数 M の階乗を計算(1) */
unsigned long nagarezu1(unsigned long M)
{
unsigned long n, x = 1;
for (n = M; n >= 1; n--) x *= n;
return x;
}
/* 正の整数 M の階乗を計算(2) */
unsigned long nagarezu2(unsigned long M)
{
unsigned long n = 1, x = 1;
while (!(n > M)) {
x *= n;
n++;
}
return x;
}
/* メイン ルーチン */
int main()
{
unsigned long x, y;
printf("正の整数を入力:");
scanf("%lu", &x);
y = nagarezu1(x);
printf("(流れ図 1) %lu の階乗:%lu\n", x, y);
y = nagarezu2(x);
printf("(流れ図 2) %lu の階乗:%lu\n", x, y);
return 0;
}