#include <stdio.h>
int main(int argc, char * argv[])
{
int n;
int r = 1;
printf("求N!的值,请输入要计算N的值:");
scanf("%d",&n);
printf("您要计算的是%d的阶乘。\n",n);
if(n<0)
{
printf("这个数好像无法计算阶乘。\n");
return 0;
}
else if( 0 == n || 1 == n)
r = 1;
else
{
for(int i = n; i>1;i--)
{
r *= i;
}
}
printf("%d的阶乘是%d\n", n,r);
return 0;
}
以上是用for循环方式实现的
以下是用递归算法实现
#include <stdio.h>
float calc_jie_cheng(int i)
{
float res;
if(i<0)
{
printf("这个数好像无法计算阶乘。\n");
return 0;
}
else if( 0 == i || 1 == i)
res = 1;
else
{
res = calc_jie_cheng(i - 1) * i;
}
return res;
//return ((i == 1 || i == 0)?1:((i<0)?0:(calc_jie_cheng(i - 1) * i)));
}
int main(int argc, char * argv[])
{
int n;
float r;
printf("求N!的值,请输入要计算N的值:");
scanf("%d",&n);
printf("您要计算的是%d的阶乘。\n",n);
r = calc_jie_cheng(n);
printf("%d的阶乘是%10.0f\n", n,r);
return 0;
}
以上均在VC++6.0测试通过,2013.04.29, 苦逼的程序猿