中易网

用C++怎么计算很大数字的阶乘

答案:3  悬赏:10  
解决时间 2021-01-23 01:16
用C++怎么计算很大数字的阶乘
最佳答案
刚写的代码,没有优化,默认最大长度是100位,有问题可以问我。#include
#include #define Max 100
int deep=0;//进位深度void Carrybit(int n,int array[],int i,int j);
void Funciton(int n,int array[],int i,int j);void Carrybit(int n,int array[],int i,int j)
{
if(j+1==Max)
{
printf("Error!");
system("pause");
exit(0);
}
if(array[j+1]!=-1)
{
Funciton(n,array,i,j+1);
array[j+1]+=array[j]/10;
if(array[j+1]>=10)
{
Carrybit(n,array,i,j+1);
}
}
else
{
array[j+1]=array[j]/10;
}
array[j]%=10;
deep++;
}void Funciton(int n,int array[],int i,int j)
{
if(deep>0)
{
deep--;
return;
}
else if(array[j]==-1)
{
return;
}
array[j]*=i;
if(array[j]>=10)
{
Carrybit(n,array,i,j);
}
}void main()
{
int i,j,n;
int array[Max]={1};//保存每一位的数字,最多Max位
printf("Please input n:");
scanf("%d",&n);
if(n<=0)
{
printf("n must > 0\n");
system("pause");
return;
}
for(j=1;j {
array[j]=-1;
}
for(i=1;i<=n;i++)
{
for(j=0;j{
Funciton(n,array,i,j);
}
}
printf("n!=");
for(j=Max-1;j>=0;j--)
{
if(array[j]!=-1) printf("%d",array[j]);
}
printf("\n");
system("pause");
}
全部回答
建个循环嘛,模式挺的! 并且算阶乘有通用的模式的
建立两个长整数组就行了啊…如果你学过汇编,那就知道应该是很简单的事情了……
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
冬季应该如何预防脱发呢
有没有记载日本战国的书?
不如起而行歇后语的前一句是什么
南昌甲醛检测中心是怎么收费的?是不是按照每
非标设计用那种三维建模软件比较好?CAD2010
霰粒肿,女,20岁
朝吟风雅颂中,朝字读音是什么?
音响与功放连接线是否都通用?
DNF结婚之后的婚房装饰是一次性的么?我把装饰
天安中心停车场地址在哪,我要去那里办事
天然乳胶床垫和记忆棉哪个好?
福城干洗地址好找么,我有些事要过去
大家说说床靠着窗户好吗,对着门呢?
中石化果庄子村加油站地址在什么地方,想过去
调q激光祛斑能不能掉
推荐资讯
地下连续墙有什么作用啊
电子秤可以走邮政平邮吗?谢啦
有什么办法能让面部汗毛长慢点 或者不张 脱毛
谁知道上海办护照的地址以及办理时间?
怎么抓厕所抽烟
飞机票改签流程
苹果开通volte服务有什么不同
哪位了解家庭用净水器报价
那泥白有用吗?有过的说说
我的腿伸不直
求助,5日成交量均量线上穿10日成交量均量线
现在市场上的室内门都有哪些种类,每种都是什
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?