c语言 求1!+2!+3!+...+n!的值.n由键盘输入

2024-10-27 21:40:24
推荐回答(4个)
回答1:

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 的阶乘。

参考资料来源:百度百科-阶乘

回答2:

#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);
}
运行过了 没什么错误了

回答3:

我刚在做这道题呢,你可以看看这个例题,稍微改一下就行了:

回答4:

#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;
}