C语言大整数求阶乘

来源:百度知道 编辑:UC知道 时间:2024/06/06 03:37:18
C语言大整数求阶乘,我已经写出来加.减.乘.除法计算器,但是在阶乘处卡了
因为计数器不可能用数组啊,那样循环就不够了,我应该用循环镶套还是递归啊,
循环镶套
for(a=0;a<10000;a++)
for(b=0;b<10000;b++)
for(c=0;c<10000;c++)
for(d=0;d<10000;d++)
{
程序段。。。。。。。。。;
}
这样他就有10000*10000*10000*10000那么长了

用递归的我没有做出来,请教一下

这样好象程序的运行次数过长,计算机不知道受得住不,有更好的算法吗?让程序少运行几次?

C的语法已经比较生疏了,只能给你个算法了,见谅。

我认为用递归比较好。

factorial(int[] o){
if(最末一位 == 1 && sum(o) == 1) /*另外写个sum来求array的和,这个结果该不会超出int或者Long吧,要不然就恐怖了……另外最好最末一位的判断写在前面,这样该可以减少sum的执行次数*/
return o;
else return multiply(o, factorial(subtract(o, 1)));
}
/*建议overload(也就是多写个)subtract,让它可以接受一个int array和int,不然有点麻烦*/