用C++怎么计算很大数字的阶乘
答案:3 悬赏:10
解决时间 2021-01-23 01:16
- 提问者网友:末路
- 2021-01-22 19:02
用C++怎么计算很大数字的阶乘
最佳答案
- 二级知识专家网友:一把行者刀
- 2021-01-22 19:34
刚写的代码,没有优化,默认最大长度是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");
}
#include
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");
}
全部回答
- 1楼网友:酒醒三更
- 2021-01-22 21:24
建个循环嘛,模式挺的! 并且算阶乘有通用的模式的
- 2楼网友:思契十里
- 2021-01-22 20:07
建立两个长整数组就行了啊…如果你学过汇编,那就知道应该是很简单的事情了……
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯