我正在尝试理解下面的代码,我很难理解它 这对你来说非常基础,但对我来说这有点复杂。我非常感谢你的回答。
#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时不应该跳过语句吗?没有回报?
我知道它的印刷是什么,但我真的想要理解。
如果我的问题足够明确,请告诉我
答案 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)