n的值不能超过13,否则会因为数据溢出而导致结果错误。
#include
int main()
{
long i,n,m,sum=0
scanf("%d",&n);
for(i=m=1;i<=n;i++);
{
m*=i;
sum+=m;
}
printf("%d\n",sum);
return 0;
}
例如:
#include
/* 通过递归计算一个数的回阶乘 */
int factorial(int num)
{
if (num==1)
return 1;
else
return (num * factorial(num - 1));
}
int main()
{
int i,n;
long sum = 1;
scanf("%d",&n);
for (i = 2;i <= n;++i)
sum += factorial(i);
printf("%ld\n",sum);
return 0;
}
扩展资料:
由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。
通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。
参考资料来源:百度百科-阶乘
#include
void main()
{int i,n;
int m=1;
int sum=0;
printf("请输入n的值:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=m*i;
sum=sum+m;
}
printf("1!+2!+3!+...+n!的值=%d\n",sum);
}
运行过了 没什么错误了
我刚在做这道题呢,你可以看看这个例题,稍微改一下就行了:
#include
int func(int n)
{
int num = 0;
if (n > 1)
num = n * func(n-1);
else if (n == 1)
num += 1;
return num;
}
int main()
{
int n, i, sum = 0;;
printf("pelase enter n :\n");
scanf("%d", &n);
for (i = 1; i <= n; ++i)
sum += func(i);
printf("1! + 2! + 3! +...+ %d! = %d\n", n, sum);
return 0;
}