(有兴趣者请帮)求任意数的阶乘
各位:
下面这道程序我打算用来求1000000的阶乘的,但是现在调试到350左右的阶乘时就报错了。为什么?求帮忙调试一下,谢谢!
/*求百万以内数的阶乘*/
#define N 350 //N为所求阶乘的数
#include<stdio.h>
void main()
{
long int i; //乘数,从2至N
int j; //数组下标
long int k; //进位数
int a[750]; //保存每次相乘的结果
k=0;
a[0]=1;
for(i=2;i<=N;i++)
{
j=0;
a[j]=a[j]*i+k;
k=a[j]/10;
a[j]%=10;
l1: if((k<=0)&&(a[j+1]<0))
{
continue;
}
else if((k>0)&&(a[j+1]<0))
{
j++;
a[j]=k;
k=a[j]/10;
a[j]%=10;
goto l1;
}
else if((k>=0)&&(a[j+1]>=0))
{
j++;
a[j]=a[j]*i+k;
k=a[j]/10;
a[j]%=10;
goto l1;
}
}
for(;j>=0;j--)
{
printf("%d",a[j]);
}
printf("\n\n\n");
}
----------------解决方案--------------------------------------------------------
100万的估计要算很长时间,那么大了已经没有意义了(除非练习算法)
我曾经编过一个可以计算到10万的,分析看楼主程序的原因可能出在数组定义过小(我没全读程序,只看了看数组下标定义,因为350!有740多位,如果再大就越界了)
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽