首先,直接使用循环进行累加:
当需要计算1到n的阶乘之和,确保输入的n小于或等于13,以避免溢出。以下代码片段展示了这种方法:
#include
intmain(){
longi,n,m,sum=0;
scanf("%ld",&n);
for(i=1;i<=n;i++){
m*=i;
sum+=m;
}
printf("%ld ",sum);
return0;
}
其次,通过递归计算每个阶乘再累加:
另一种方法是利用递归计算每个数的阶乘,然后累加。注意递归仅适用于较小的n值,以防止栈溢出。示例代码如下:
#include
intfactorial(intnum){
if(num==1)
return1;
else
return(num*factorial(num-1));
}
intmain(){
inti,n;
longsum=1;
scanf("%d",&n);
for(i=2;i<=n;++i)
sum+=factorial(i);
printf("%ld ",sum);
return0;
}
以上代码提供了两种求和阶乘的方法,但请务必确保输入的n值在可接受范围内。