#include <stdio.h>
#include <math.h>
int factorial(int n) //求阶乘,返回值 是结果值的位数
{
long a[10000];
int i,j,c,m=0;
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;}
}
printf("%ld",a[m]);
for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);
int w=m*4+(int)log10(a[m])+1;
return w;
}
void main()
{
factorial(20);
}
语法:int result=factorial(int n); | |
参数: | |
n: | n 的阶乘 |
返回值: | 阶乘结果的位数 |
这里的方法很简洁,如果你想用字符串的形式,也可以参考我之前一篇文章http://blog.csdn.net/luoluoxiaocainiao/article/details/9879839 里面的Add和Mul函数可以实现阶乘.