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