真党的没有计算阶乘的公式的,也没有简便方法,只是硬算,也可以运用计算机,可以计算到65!,如果你想计算跟大的数,我建议你上百度寻找计算阶乘的软件,听说多大的数都能计算出来。嘿!那来自个Q币的,怎么了??^_^
还有这个参考:
由于阶乘运算的增长速度特别快(比2^n的增长速度快),对于较小整数的阶乘运算采用简单的递规算法可以实现,但是对于大整数的乘法(比如1000!),则传统的递规算法就失去了作用。
由于本人的水平不高,用下列拙劣的方式实现,请高人多多指教。具体如下:定义一个很长的数组,用数组的每一项表示计算结事果的每一位。例如,7!=5040,a[1000]360问答,则a[0]=0,a[1]=4,a[2]=0,a[3]=5。
程序源代码:
/**
*计算大数的阶乘,算法的主要思想就是将计算结果的每一位用数组的一位来表兵史显读示:如要计算5!,那么首先将
*细商三(1)a[0]=1,然后a[0]=a[0]*2,a[0]=2,
*(2)a[0]=a[0]*3,a[0]=6
*(3)a[0]=a[0]*蒸传4,a[0]=24,此时a[1]=2,a[0]=4
*/
publicclassFactorial
{
staticinta[]=newint[10000];
staticvoidfactorial(intn)
{
for(inti=2;i a[i]着抗但汽帮局况距铁复=0;//将数组元素初始化 a[0]=1;//用数组的一项存放计算结果的位数 a[1]=1;//将第一项赋值为一 for(intj=2;j<=n;j++) { int补i=1; intc=0;//c表示向高位的进位 for(;i<=a[0];i++) { a[i]=a[i]*j+c;//将来自低位的计算结果和本位的结果相加 c=a[i]/10; a[i]=a[i]%10; } for(;c!=0;i++) { a[i]=c%10; c=c/10; } 格露触红居a[0]=i-1; } } publicstaticvoidmain(烈机四误String[]args) { Stringnum=arg将顶据把女器翻群南校积s[0]; intcount=0; intn=Integer.parseInt(num); f(n); for(inti=a[0];i>0;i--) { count++; System.out.print(/*"a["+i+"]="+*/a[i]/*+""*/); } System.out.println("\n"+count还载状谈); } } Trackback:h息季组解ttp://tb.blog.csdn.net/TrackBack.aspx?PostId=528778 参考资料:http://blog.csdn.net/hengshan/archive/2005/11/13/528778.aspx