c语言我的理解是当i=1时,show(0),递归,if(0>0)不成立,退出,为什么会有输出:1 2 3 4 5

#include<stdio.h>intshow(inti){if(i>0)show(i-1)printf("%d",i);}reurn0;}intmain(){show... #include<stdio.h>
int show(int i)
{

if(i>0)
show(i-1)
printf("%d ", i);
}
reurn 0;
}
int main()
{
show(5);
printf("\n");
return 0;
}
和缓存有关吗?能解释下吗?
展开
 我来答
松甜恬0Je4ba
2013-04-13 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3663万
展开全部
show(0),递归,if(0>0)不成立

不是退出 而是返回调用它的函数。

这就像 main调用show函数,show函数完成后,它会返回main函数继续执行。

show(5) 调用 show(4) 调用show(3).....show(0)

然后 show(0) 执行完了 返回 show(1) show(1) 执行完了 返回show(2) .......一直返回到show(5),然后到main函数 然后程序结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
777e21945e3f
2013-04-13 · TA获得超过3280个赞
知道小有建树答主
回答量:941
采纳率:100%
帮助的人:1227万
展开全部
理解正确,输出也正确。只和递归机制有关。

show的过程,先安排降级的show工作,再打印自己。
所以打印工作顺序就是
show(0)
show(1)'s print1
show(2)'s print2

show(3)'s print3

show(4)'s print4

show(5)'s print5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hekello
2013-04-13 · TA获得超过169个赞
知道答主
回答量:91
采纳率:100%
帮助的人:12.7万
展开全部

你家窗户没有窗纱吗?咋让臭虫子飞进了你的爱机了,看看debug后的代码

#include<stdio.h>

int show(int i)

{

 if(i>0)   

  show(i-1); 

 printf("%d  ", i);

 return 0;

}

 

int main()

{

 show(5);

 printf("\n");

 return 0;

}

 

首先你得明白啥是栈,栈具有先进后出的特点。调用函数时会把函数的返回地址和参数压入栈,然后对参数进行运算,直到遇到return后把函数的返回地址和参数弹出栈并从函数的返回地址返回。如果你仍无法理解的话,看看下面的代码(cpoy后代码格式乱了,vc全选代码后,按alt+f8整理下或者下载附件):

#include&lt;stdio.h&gt;
int show(int i)
{
if(i&gt;0)
{
if(i-1&gt;0)
{
if(i-2&gt;0)
{
if(i-3&gt;0)
{
if(i-4&gt;0)
{
if(i-5&gt;0)
{
return 0;
}
printf("%d ", i-5);
}
printf("%d ", i-4);
}
printf("%d ", i-3);
}
printf("%d ", i-2);;
}
printf("%d ", i-1);
}
printf("%d ", i);
return 0;
}
int main()
{
show(5);
printf("\n");
return 0;
}

 

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恶灵的加护
2013-04-13 · TA获得超过969个赞
知道小有建树答主
回答量:492
采纳率:0%
帮助的人:506万
展开全部
当i等于1的时候,show(1-1)就无法继续,但是show函数后面还有printf,这个时候才输出1。
之后递归调用的函数逐层出栈,依次输出2,3,4,5.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b36f72a
2013-04-13 · TA获得超过1417个赞
知道小有建树答主
回答量:744
采纳率:0%
帮助的人:559万
展开全部
这是递归,你传进去一个参数5,那么5是>0的那么就show(4)然后输出5,就这么一直递归到i=1的时候。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式