起初觉得不好理解,看了几个源代码后依然一头雾水,然后自己琢磨了好久,又去看,然后才写出来。。。一定要多去想,才可以理解
自己多试几个例子就可以理解大数阶乘,这个代码主要就是和列竖式一个意思,一位位的去乘,然后判断近位:
代码也很好理解:
`
``c
#include<stdio.h>
int main()
{
int n,j;
int a[40000],b[40000];
int carry;
while(~scanf("%d",&n))
{
int d=1;a[0]=1;//初始化要写到for循坏外面
for(int i=2;i<=n;i++)
{
for(j=0,carry=0;j<d;j++)//每一位都与i相乘
{
int temp=a[j]*i+carry;
a[j]=temp%10;
carry=temp/10;
}
while(carry)
{
a[d]=carry%10;//若有近位,
++d;//将位数加1;因为下一个数多了一位;
carry/=10;
}
}
for(j=d-1;j>=0;j--)//这里注意上面的d多加了一个1,这里要减去;
{
printf("%d",a[j]);
}
printf("\n");
}
return 0;
}