c语言调用递归函数求n!出错
当输入1010时,得到是0;答案为3628800;哪里出错了呢#include<stdio.h>intmain(){intfac(intn);intn,;inty;pri...
当输入1010时,得到是0;答案为3628800;
哪里出错了呢
#include <stdio.h>
int main()
{
int fac(int n);
int n,;
int y;
printf("Please input an integer number\n");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("cuo");
else
if(n==1||n==0)
f=1;
else
f=fac(n-1)*n;
return f;
} 展开
哪里出错了呢
#include <stdio.h>
int main()
{
int fac(int n);
int n,;
int y;
printf("Please input an integer number\n");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("cuo");
else
if(n==1||n==0)
f=1;
else
f=fac(n-1)*n;
return f;
} 展开
4个回答
展开全部
1010! 超出了int能表示的范围,10! 才等于 3628800,你可能看错题了。如图:
#include <stdio.h>
unsigned int fac(unsigned int n);
int main()
{
unsigned int n, y;
printf("Please input an integer number\n");
scanf("%d", &n);
y = fac(n);
printf("%d!=%d", n, y);
return 0;
}
unsigned int fac(unsigned int n)
{
if (n == 1 || n == 0)
return 1;
return fac(n - 1) * n;
}
展开全部
int n,;的n后多了个,。余无错。
输入不得大于12,否则溢出,你怎么还能输入1010呢,10!=3628800,而不是1010!=3628800。
应当把printf("cuo");改为return 0;才好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要干什么?这个预期答案怎么来的?这些都没有,我怎么回答你?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1010的阶乘太大了
早就爆了
而且1010的阶乘的值不是3628800
早就爆了
而且1010的阶乘的值不是3628800
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询