在终止条件下带或不带return语句的递归

时间:2014-02-25 00:09:34

标签: c++ recursion trie

请解释return语句如何用于trie的简单递归解析

案例A:

if (true) push &stack; //push path result onto a stack
else{
   if (terminating condition true) return;
   else {
      condition 1 recursion to next node
      condition 2 recursions to next node
      ...
      condition n recursion to next node
   }
   recursion to next path;
}

案例B:

if (true) {
   push &stack; //push path result onto a stack
   return;
}else{
   if (terminating condition true) return;
   else{
      condition 1 recursion to next node
      condition 2 recursion to next node
      ...
      condition n recursion to next node
   }
   recursion to next path;
}

案例A对我来说很好。但是,我不明白将结果推送到堆栈后会发生什么。 “它”如何知道终止这些路径?

2 个答案:

答案 0 :(得分:1)

对于返回类型为void的函数,不一定要使用return语句。如果在没有遇到return语句的情况下到达此类函数的末尾,则将控制权传递给调用者,就好像遇到没有表达式的return语句一样。换句话说,在完成最终语句时发生隐式返回,并且控件自动返回到调用函数。无论如何,您不需要为另一行代码付费,最好添加一个返回语句 但请注意,对于使用非void返回类型声明的函数,它是必需的。它有时没有return语句,例如,这个:Confused about the function return value。但这是未定义行为的结果。

答案 1 :(得分:0)

案例A的作用是因为结果被推送到堆栈或向量,或者使用了任何结构,然后终止该特定路径。如果有返回,它会启动堆栈的解析并退回前面的迭代。因此,在案例B中,只能找到一个结果。

相关问题