永发信息网

c语言递归调用的问题

答案:3  悬赏:60  手机版
解决时间 2021-05-07 03:08
  • 提问者网友:人傍凄凉立暮秋
  • 2021-05-06 17:32

#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是怎么回事?

最佳答案
  • 五星知识达人网友:不如潦草
  • 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));

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯