(仅用于记录个人思路)
可求更大的n的阶乘,但是同时会占用更多的时间和空间(比如将数组a开到亿的级别)
//len用于记录长度,赋值a[1]和len为1,输入n
for(x=2;x<=n;x++)//5!
{
for(i=1;i<=len;i++)
{
a[i]*=x; //2---6-----24-20 10
}
for(i=1;i<=len;i++)
{
if(a[i]>=10)
{
a[i+1]+=a[i]/10; //不变-不变-4--12 1
a[i]%=10; //不变-不变-2--0 2
}
}
while(a[len+1]>=1)
{
len++; //不变-不变-2--3
a[len+1]=a[len]/10; //不变-不变-0--0
a[len]%=10; //不变-不变-2--1
}
}
//倒序输出即可
这篇博客探讨了如何使用数组来计算较大数值的阶乘,虽然这种方法会增加时间和空间复杂度,但能处理亿级别以上的n值。
669

被折叠的 条评论
为什么被折叠?



