我昨天也问了这个问题,但之前没有得到任何答案。 我真的想逐步了解问题中正在发生的事情以及该计划中的控制流程。
#include<stdio.h>
rec(int);
main()
{
int x=5;
rec(x);
system("PAUSE");
return 0;
}
rec(int y)
{
if (y>0)
{
rec(y-1);
printf("%d ", y);
}
// printf("%d ", y)
}
以及两个
printf
语句中的输出有何不同?
答案 0 :(得分:1)
rec是一个递归函数,如果满足条件,它将调用自身。因此,当从main(rec(5))调用它时,y大于0,因此它将自己调用4作为参数(y-1)。一旦完成该调用,它将执行printf,但因为它将4传递给它本身,并且4&gt; 0表示它将再次调用自身传递它3.这将继续直到0传递给rec。当达到0时,不满足条件并且执行停止,因此先前的调用(1通过时)将执行其printf,然后调用(y = 2)将执行其printf,依此类推!所以你的输出将是 1 2 3 4 5
编辑:
我认为你的问题是关于递归,而不是语法