
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;
}
和缓存有关吗?能解释下吗? 展开
int show(int i)
{
if(i>0)
show(i-1)
printf("%d ", i);
}
reurn 0;
}
int main()
{
show(5);
printf("\n");
return 0;
}
和缓存有关吗?能解释下吗? 展开
5个回答
展开全部
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函数 然后程序结束。
不是退出 而是返回调用它的函数。
这就像 main调用show函数,show函数完成后,它会返回main函数继续执行。
show(5) 调用 show(4) 调用show(3).....show(0)
然后 show(0) 执行完了 返回 show(1) show(1) 执行完了 返回show(2) .......一直返回到show(5),然后到main函数 然后程序结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理解正确,输出也正确。只和递归机制有关。
show的过程,先安排降级的show工作,再打印自己。
所以打印工作顺序就是
show(0)
show(1)'s print1
show(2)'s print2
show(3)'s print3
show(4)'s print4
show(5)'s print5
show的过程,先安排降级的show工作,再打印自己。
所以打印工作顺序就是
show(0)
show(1)'s print1
show(2)'s print2
show(3)'s print3
show(4)'s print4
show(5)'s print5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你家窗户没有窗纱吗?咋让臭虫子飞进了你的爱机了,看看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<stdio.h>
int show(int i)
{
if(i>0)
{
if(i-1>0)
{
if(i-2>0)
{
if(i-3>0)
{
if(i-4>0)
{
if(i-5>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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当i等于1的时候,show(1-1)就无法继续,但是show函数后面还有printf,这个时候才输出1。
之后递归调用的函数逐层出栈,依次输出2,3,4,5.
之后递归调用的函数逐层出栈,依次输出2,3,4,5.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是递归,你传进去一个参数5,那么5是>0的那么就show(4)然后输出5,就这么一直递归到i=1的时候。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询