C语言一些小问题,求解答

输出结果怎么是14?在调用函数funs的时候,判断结果为else,执行n+funs(n-1);不是5+(5-1)?... 输出结果怎么是14?
在调用函数funs的时候,判断结果为else,执行n+funs(n-1);
不是5+(5-1)?
展开
 我来答
百I度网友AQnlQ
2019-03-25 · TA获得超过143个赞
知道小有建树答主
回答量:188
采纳率:37%
帮助的人:13.6万
展开全部
在这个题中,fun()函数发生了递归调用,即函数自己调用自己。在满足发生递归的条件时,递归调用是以逐层嵌套的:形式进入,直到递归条件不再满足,再由最内层开始依次逐层退出。递归调用发生的次数由发生递归的条件所决定。本题中 n=5,进入fun(5)后,会继续发生fun(4)、fun(3)调用,然后由内层依次返回,程序运行过程如下:
第1次调用 : n=5,执行5+fun(4)
第2次调用 : n=4,执行4+fun(3)
第3次调用 : n=3,执行3+fun(2)
笫1次返回 : 退出笫3次调用,返回值 3+2=5
第2次返回 : 退出第2次调用,返回值 4+5=9
第3次返回 : 退出第1次调用,返回值 5+9=14
所以主程序输出S=14。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沐曼珠3J
2019-03-25 · TA获得超过165个赞
知道答主
回答量:944
采纳率:21%
帮助的人:43.3万
展开全部
结果是对的。
首先,funs()定在调用的时候形成了递归,所以算出来的结果就不会是5+5-1。
其次,你的程序的过程可以表达为5+(4+(3+2)),也就是说你在funs()里递归调用了funs()。
在做C语言程序的时候,一定要理清思路,避免不应出现的递归,以免形成死循环,你这个调用如果参数错误,很容易出错。
第三,按你的要求,结果是9的话,正确做法funs()定义return(n-1),main()里调用print(n+funs(n))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梅髅鲨
2019-03-25
知道答主
回答量:8
采纳率:0%
帮助的人:5705
展开全部
这是递归,funs函数一直调用自身,就是funs函数中再不断执行funs函数,所以n一直减到2结束调用,结果是5+4+3+2=14
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tommrry
2019-03-25 · TA获得超过133个赞
知道小有建树答主
回答量:209
采纳率:33%
帮助的人:72.7万
展开全部
这是递归函数,不是只执行一次,唉,怕你不明白,再解释下吧,就是n=5,funs(n-1)=9,n+funs(n-1)=5+9=14,这回明白没?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友48429e1
2019-03-25 · TA获得超过336个赞
知道小有建树答主
回答量:340
采纳率:73%
帮助的人:130万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(13)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式