备孕检查必须检查项目:j!=(j-1)!*j

来源:百度文库 编辑:高校问答 时间:2024/03/29 17:54:55

int fun(int n)
{
if(n==0)
return 1;
else
return n*fun(n-1);
}

int main()
{
printf("%d",fun(5));
return 0;
}

结果为120;

阶乘吧,不过要怎么编呀,先写个G++的
/*
*G++下通过编译
*/
#include <stdio.h>

struct BigNumber
{
short number[38400];
int length;
};

void MULTS(BigNumber & a,int b,BigNumber & c)
{
int i,aa;
int cc=0;
for(i=0;i<a.length||cc!=0;++i) {
aa=i<a.length?a.number[i]:0;
cc+=aa*b;
c.number[i]=cc%10;
cc/=10;
}
c.length=i;
}

void init(BigNumber & b,int a)
{
int i;
for(i=0;a;++i) {
b.number[i]=a%10;
a/=10;
}
b.length=i;
}

void print(BigNumber & a)
{
int i = ( a.length == 0 ) ? 0 : a.length-1;
for(;i>=0;--i)
printf("%d",a.number[i]);
printf("\n");
}

int f(int n)//递归实现
{
if(n>1)
return f(n-1)*n;
else return 1;
}

int g(int n)//迭带
{
int i,res;
for(i=1;i<=n;++i) res*=i;
return res;
}

BigNumber h(int n)//高精度实现,不过跑10000的阶乘要跑个几秒钟的
{
int i;
BigNumber res,tmp;
init(res,1);
for(i=1;i<=n;++i)
{
MULTS(res,i,tmp);
res=tmp;
}
return res;
}

int main()
{
//freopen("out.txt","w",stdout);//打开这行就文件输出
int j;
BigNumber res;
scanf("%d",&j);
res=h(j);
print(res);
printf("\n");
return 0;
}

你想做什么呀。不明白