永发信息网

c语言递归调用的问题

答案:3  悬赏:60  手机版
解决时间 2021-05-07 03:08

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

最佳答案

1:在输入n后判断而不是放进函数里判读即可;


2:因为即使是error,你也要执行完函数,返回a;而这个时候a是未知数,系统随机生成,所以……实现了1后即可解决2了

全部回答

#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结束

这里改一下 int b; printf("请输入n的数值:"); scanf("%d",&b);

if(b>=0)

{

printf("阶乘是:"); printf("%d\n",f(b));

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁有跑跑加速G
第一次表白就失败怎么办?
三亚又有哪些度假酒店?
重庆德庄火锅下沙宝龙广场店在哪里啊,我有事
实习单位指导教师评语是会计填么?
东方证券网上行情交易系统
请推荐一款1500~2000的机子!
关于SD敢达龟霸修理装备型的问题
点解5530要下证书
如何分辨水货手机??
婚姻保卫战一共多少集啊?
谁能推荐一款好的财经杂志,市面上容易订的。
魔兽为什么玩不了
急~申通快递单号查不到!
魔兽里没人啊
推荐资讯
穿越火线礼物
笔记本充电器坏了换个要多少钱?
数学问题,找人帮忙。。
从南京迈皋桥怎么去江宁101总站方便
环境描写的作用是什么,环境描写的作用是什么
关于成人高考的详细信息
良晨美景奈何天,下一句是什么?
南充哪里矫正牙齿好
笔记本的下划线怎么打,怎么在电脑上下载电影
关于九成魔兽卡的问题
厨房大拿是什么意思,“大拿”是什么意思。
孙帅帅这名子怎样写好看啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?