C语言 求1!+2!+3!+… +n! , 其中n由键盘输入。
来源:百度知道 编辑:UC知道 时间:2024/06/17 08:32:07
求助高手
精度计算——大数阶乘
语法:int result=factorial(int n);
参数:
n:
n 的阶乘
返回值:
阶乘结果的位数
注意:
本程序直接输出n!的结果,需要返回结果请保留long a[]
需要 math.h
源程序:
int factorial(int n)
{
long a[10000];
int i,j,l,c,m=0,w;
a[0]=1;
for(i=1;i<=n;i++)
{
c=0;
for(j=0;j<=m;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
}
if(c>0) {m++;a[m]=c;}
}
w=m*4+log10(a[m])+1;
printf("\n%ld",a[m]);
for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);
return w;
}
采用递归思想。
long func(int n)
{
long ans;
if(i>0) ans=func(n-1)*n;
else ans=1;
return ans;
}
主函数用for循环实现累加。
for(i=1;i<n;i++)
sum+=func(i);
这是用c++写的,适当的改一下就可以了。
#include<iost