帮忙分析道C语言题

#includ<stdio.h>voidmain(){intw=5;f(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf... #includ<stdio.h>
void main()
{int w=5;
f(w);printf("\n");
}
fun (int k)
{
if (k>0)fun(k-1);
printf("%d",K);
}
输出为:
A.5 4 3 2 1 B. 0 1 2 3 4 5 C.1 2 3 4 5 D.5 4 3 2 1
麻烦详解下。我不需要答案,我需要弄懂,谢谢
展开
 我来答
wangbiao906
2009-10-16 · TA获得超过181个赞
知道答主
回答量:124
采纳率:0%
帮助的人:0
展开全部
答案为0 1 2 3 4 5
该题用了简单的递归思想,递归的特点就是频繁的调用函数本身。
像本题,在主函数中首次调用fun(k),然后判断条件k>0,符合条件从而调用fun(k-1),此时的k值为5.调用fun(k-1)后为4,以此类推为3,2,1,0.最后再输出k值0 1 2 3 4 5。
也许你对最后的输出有点疑惑,你要知道递归好比是个循环(例如for),fun(5)在最外层,fun(4)次之,其他依次类推,所以首先输出最内层的值。
记住,递归本质就是循环,用循环的思想去理解,我相信你也会明白的。
加油啊!兄弟
successjerry
2009-10-16 · TA获得超过919个赞
知道小有建树答主
回答量:576
采纳率:0%
帮助的人:444万
展开全部
1----5>0进入f(5-1)
2----4>0进入f(3)
3----3>0进入f(2)
4----2>0进入f(1)
5----1>0进入f(0)
6----0>0不成立,则执行printf语句输出
先返回第5步的结果k=0,依此推,得1 2 3 4 5,所以选b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
召朋义0I2
2009-10-16 · TA获得超过259个赞
知道答主
回答量:442
采纳率:0%
帮助的人:0
展开全部
你应该看谭浩强那本书上关于循环的那部分,那部分写过递归原理,是先是5,直到变成不符合条件的0时,才反过来开始执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoxia6hao
2009-10-16
知道答主
回答量:30
采纳率:0%
帮助的人:10.1万
展开全部
程序都写不对,谁还有心情帮你?
f(5)
f(4)
f(3)
f(2)
f(1)
f(0)
0
1
2
3
4
5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gaussine
2009-10-16 · TA获得超过272个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:147万
展开全部
B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式