【发布时间】:2012-08-31 15:03:10
【问题描述】:
可能重复:
What is recursion really and explain the output of this program?
What is really happening in this code?
我有一个我不明白的递归函数。我什至不知道代码是否有效:
int count(int x) // suppose x is 3
{
if(x>0)
{
count(--x);
printf(x);
count(--x); // control reaches here or not?
}
}
这只是伪代码。取初始变量为3。请结合上下文解释堆栈的概念。这段代码让我困惑了好几天,我真的找不到这段代码的答案。
【问题讨论】:
-
显然这是一个很多的家庭作业,因为许多新手都在问同样的问题。最好的建议是阅读一本关于递归的好书。不可能在几分钟内向不知名的观众解释。
-
请注意,您不会从非 void 函数返回任何内容。那是未定义的行为。
-
在 SO 中搜索递归并找到针对这个确切问题的其他一些答案。有很多好的。如果您仍然不明白,请参考那些更新您的问题。
-
我会让代码可编译并放入更多 printf 语句以查看发生了什么。执行该方法,看看它是如何调用自己的。
-
我真的很想知道谁在做这个作业。这是一段愚蠢的代码,显然很多学生不明白..
标签: c function recursion operators