下面程序怎样分析啊?

#include<stdio.h>
void mian(){
  int w=5;
  fun(w);
  printf("\n");
  }
   fun (int k)
{
   if(k>0)
   fun(k-1); 

  printf("%d",k);

   }

网友评论:

这个程序你应该一步一步的跟一下,看一程序一步一步是怎么走的,对于这种自己调用自己的函数确实不太好理解...
第1次调用fun(5),k=5,&gt;0,调用自己fun(5-1);,注意printf(&amp;quot;%d&amp;quot;,k);未执行呢(k=5);
第2次调用fun(4),k=4,&gt;0,调用自己fun(4-1);,注意printf(&amp;quot;%d&amp;quot;,k);未执行呢(k=4);
第3次调用fun(3),k=3,&gt;0,调用自己fun(3-1);,注意printf(&amp;quot;%d&amp;quot;,k);未执行呢(k=3);
第4次调用fun(2),k=2,&gt;0,调用自己fun(2-1);,注意printf(&amp;quot;%d&amp;quot;,k);未执行呢(k=2);
第5次调用fun(1),k=1,&gt;0,调用自己fun(1-1);,注意printf(&amp;quot;%d&amp;quot;,k);未执行呢(k=1);
第6次调用fun(0),k=0,不满足&gt;0,不再调用,执行printf(&amp;quot;%d&amp;quot;,k);此时k=0,即之行第一次输出,输出0,返回到第5次的printf(&amp;quot;%d&amp;quot;,k);k=1,输出1,一次类推,输出2,3,4,5,返回主程序并结束...

期待 发表于09-17 14:12 浏览65535次
分享到:

已有4条评论

  • 期待
    期待 09-17 14:15

        回复 期待:程序没有执行完,就调用其他程序,调用完当然要返回来继续执行未执行的程序语句了...

  • 期待
    期待 09-17 14:15

    为什么还返回第五步呢?为什么 不是直接输出0?

  • 期待
    期待 09-17 14:14

        回复 期待:这是一个调用函数,你可以先看一下调用函数的课题讲解。看后会更懂。

  • 期待
    期待 09-17 14:12

    我不是大一的,对于这个程序,我觉得最后答案应该是4,3,2,1,0而运行出来却是0,1,2,3,4,5,我不知道为什么啊。

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32857个|学分:67868个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号