#include<stdio.h>
void main()
{
int f(int n);
int b;
printf("请输入n的数值:");
scanf("%d",&b);
printf("阶乘是:");
printf("%d\n",f(b));
}
int f(int n)
{
int a;
if(n<0)
printf("error");
else if(n==0||n==1)
a=1;
else
a=f(n-1)*n;
return(a);
}输入-1怎么把“阶乘是”字去掉,就是直接输出error,还有后面2009095316是怎么回事?
c语言递归调用的问题
答案:3 悬赏:60 手机版
解决时间 2021-05-07 03:08
- 提问者网友:人傍凄凉立暮秋
- 2021-05-06 17:32
最佳答案
- 五星知识达人网友:不如潦草
- 2021-05-06 17:45
1:在输入n后判断而不是放进函数里判读即可;
2:因为即使是error,你也要执行完函数,返回a;而这个时候a是未知数,系统随机生成,所以……实现了1后即可解决2了
全部回答
- 1楼网友:蓝房子
- 2021-05-06 19:26
#include<stdio.h> void main() { int f(int n); int b; printf("请输入n的数值:"); scanf("%d",&b); printf("阶乘是:"); if(f(b)==0) printf("error\n"); else printf("%d\n",f(b)); } int f(int n) { int a; if(n<0) return 0; if(n==0) a=0; else if(n==1) a=1; else if(n>1) a=f(n-1)*n; return(a); }
这个就可以了,当你输入-1时你的int f(int n) 就可以结束了,所以不应该再做下面。所以要返回一个0结束
- 2楼网友:渊鱼
- 2021-05-06 18:48
这里改一下 int b; printf("请输入n的数值:"); scanf("%d",&b);
if(b>=0)
{
printf("阶乘是:"); printf("%d\n",f(b));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯