谁能告诉我c语言嵌套调用求n的阶乘的方法,十万火急!!!

在网上找了很长时间没有啊。谁能帮帮我啊,我急用!!!

递归就可以啊。
比如
inr f(int n)
{
if(n>1)
{
n=n*f(n-1);
return n;
}
else if(n==1)
{
return 1;
}
}
然后在主函数调用一下,传入一个n再用一个整数型接受n的阶乘就好了追问

能不能给我个完整的答案呢,我不太会,太感谢你了,麻烦了。

追答

inr f(int n)
{
if(n>1)
{
n=n*f(n-1);
return n;
}
else if(n==1)
{
return 1;
}
}
void main()
{
int sum,n;
scanf("%d",&n); //输入n;
sum=f(n);
printf("n的阶乘为sum=%d",sum);
}

没调试。不保证绝对正确。如有错误可追问

追问

好像大于16的时候就溢出了。

追答

inr f(long n)
{
if(n>1)
{
n=n*f(n-1);
return n;
}
else if(n==1)
{
return 1;
}
}
void main()
{
long sum,n;
scanf("%l",&n); //输入n;
sum=f(n);
printf("n的阶乘为sum=%l",sum);
}

楼主,刚才那个代码之所以大于16会出问题是因为int的存储范围有限。现在换成long可以大一些。但是如果超过一定程度也是会溢出的。

如果你想要一个不论多大的阶乘都能算的程序那会比较麻烦。。而且如果你是初学,要那个也没啥用吧。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-27
#include<stdio.h>
int f(int n)
{
if(n>1)
{
n=n*f(n-1);
return n;
}
else if(n==1)
{
return 1;
}
}

int main()
{
int n,sum=0;
scanf("%d",&n);
sum=f(n);
printf("%d\n",sum);
return 0;
}
第2个回答  2011-11-27
#include<stdio.h>
int fact(int n)
{
if(n==0||n==1) return 1;
else return n*fact(n-1);
}
void main()
{
int n;
scanf("%d",&n);
printf("%d!=%d\n",n,fact(n));
}

运行情况:
5
5!=120
请按任意键继续. . .
第3个回答  2011-11-27
顶楼上,递归就可以

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网