在网上找了很长时间没有啊。谁能帮帮我啊,我急用!!!
递归就可以啊。
比如
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;
}
}
然后在主函数调用一下,传入一个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;
}
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
请按任意键继续. . .
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
顶楼上,递归就可以