【发布时间】:2017-10-29 17:14:11
【问题描述】:
我试图了解如何在 C 中使用递归,但我无法理解 return 在其中的工作原理。
请考虑以下代码:
int recur(int i)
{
printf("recur: i = %d\n", i);
if (i < 3)
{
recur(i + 1);
return 10;
}
else if (i < 5)
recur(i + 1);
return i;
}
int main(void)
{
int i = 0;
i = recur(i);
printf("i = %d\n", i);
return 0;
}
输出是:
recur: i = 0
recur: i = 1
recur: i = 2
recur: i = 3
recur: i = 4
recur: i = 5
i = 10
最后一个返回 return i 是做什么的?这段代码有意义吗?
【问题讨论】:
-
在
recur函数中,递归调用返回的值会发生什么情况?您只需将它们扔掉即可。另外,我建议你使用调试器来单步调试代码,单步执行递归调用,看看会发生什么。 -
对不起,我的意思是
return i不是return 0... 我编辑了我的代码 -
编写一个无用的函数,你将从中学到任何有用的东西。
-
@n.m.我完全不同意你的看法。或者请解释一下你的观点。
-
编程语言是一种实用、实用的结构。如果您不将其用于其预期目的,即编写有用的程序,则很难理解它。这样你会错过很多东西。但是,如果这对您有用,请继续。
标签: c recursion return-value function-definition