【发布时间】:2014-02-21 20:22:31
【问题描述】:
很抱歉,关于一个已经讨论过很多次的论点提出了一个非常基本的问题,我只是想不出答案。我尝试在论坛中搜索已经提出的问题,但没有找到确切的答案(或不理解)。
为什么这个函数在以不同的顺序调用时会打印两次从 i 到 10 的数字? 它不应该以相同的顺序打印出来吗?我一直听说这就是递归的工作原理:每个函数在其代码中调用另一个相同的函数,只应用于较小的域,直到满足结束条件。此时它应该返回(回溯)到原始功能;这是我不明白的,为什么它返回(不打算作为语法调用)到主函数。
void count(int i){
if(i < 10){
printf("%d\n", i);
count(i + 1);
printf("%d\n", i);
}
}
谢谢。
【问题讨论】:
-
通过调试器运行您的代码并单步执行每一行,您会找到答案;)
-
请不要将问题标记为已解决。相反,接受最有帮助的答案并保持原样。
-
@EricLippert k,我是论坛的新手,不知道规则,谢谢提醒。
-
不用担心。有关此使用点的讨论,请参阅 meta.stackexchange.com/questions/116101/…。
标签: c recursion tail-recursion