理解基本程序

时间:2014-01-26 12:37:39

标签: c

我正在尝试理解下面的代码,我很难理解它 这对你来说非常基础,但对我来说这有点复杂。我非常感谢你的回答。

 #include<stdio.h>
 void fun(int);
 int proc(pf, int, int);

int main()
{
  int a=3;
  fun(a);
  return 0;
}

void fun(int n)
{
     if(n > 0)
   {
    fun(--n);
    printf("%d,", n);
    fun(--n);
   }
}

根据我的理解,乐趣需要3 - &gt; fun(3)然后调用该函数,直到n不是&gt;比0.所以它必须存储3,2,1,0对吗?

但是它又打印0,因为0不大于0.

我不明白的是if语句中的printf,因为我们打印n>0所以当0不大于0时不应该跳过语句吗?没有回报?

我知道它的印刷是什么,但我真的想要理解。

如果我的问题足够明确,请告诉我

2 个答案:

答案 0 :(得分:2)

n为1时,控制流进入if语句,但随后n会立即递减(fun(--n)),因此它变为0。

答案 1 :(得分:1)

我希望这能说明一下:

            fun(3)
            ------
              ↓         
           fun(2)  print → fun(1) ..
              ↓
           fun(1)  print → fun(0)
              ↓
           fun(0)  print → fun(-1)
相关问题