帮忙分析道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
麻烦详解下。我不需要答案,我需要弄懂,谢谢 展开
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
麻烦详解下。我不需要答案,我需要弄懂,谢谢 展开
5个回答
展开全部
答案为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)次之,其他依次类推,所以首先输出最内层的值。
记住,递归本质就是循环,用循环的思想去理解,我相信你也会明白的。
加油啊!兄弟
该题用了简单的递归思想,递归的特点就是频繁的调用函数本身。
像本题,在主函数中首次调用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)次之,其他依次类推,所以首先输出最内层的值。
记住,递归本质就是循环,用循环的思想去理解,我相信你也会明白的。
加油啊!兄弟
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你应该看谭浩强那本书上关于循环的那部分,那部分写过递归原理,是先是5,直到变成不符合条件的0时,才反过来开始执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序都写不对,谁还有心情帮你?
f(5)
f(4)
f(3)
f(2)
f(1)
f(0)
0
1
2
3
4
5
f(5)
f(4)
f(3)
f(2)
f(1)
f(0)
0
1
2
3
4
5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询