关于数组模拟大数阶乘

如题所述

第1个回答  2020-04-14
for(i=2999;i>0;i--)
{
r[i-1]=r[i-1]+r[i]/10;
r[i]=r[i]%10;
}
这里进位反了,r的地位是数据的高位,,把r[i-1]变成r[i+1]
不过,这个要分三步走,先处理个位,再循环处理中间位,再处理最高位
再说了你的子函数也不是求n的阶乘,只是求了r乘以n
结合主函数
for(i=1;i<=n;i++)
count(i);
才是n的阶乘,
你无法计算1!+2!+.......+n!这个
要想计算这个,还需要一个数组来存储所有数的和
if(r[i]||reach!=0)
printf("%d",r[i]);
这里只判断reach就可以,不然r的中间要是有零的打印不出来
相似回答