请解释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对我来说很好。但是,我不明白将结果推送到堆栈后会发生什么。 “它”如何知道终止这些路径?
答案 0 :(得分:1)
对于返回类型为void的函数,不一定要使用return语句。如果在没有遇到return语句的情况下到达此类函数的末尾,则将控制权传递给调用者,就好像遇到没有表达式的return语句一样。换句话说,在完成最终语句时发生隐式返回,并且控件自动返回到调用函数。无论如何,您不需要为另一行代码付费,最好添加一个返回语句 但请注意,对于使用非void返回类型声明的函数,它是必需的。它有时没有return语句,例如,这个:Confused about the function return value。但这是未定义行为的结果。
答案 1 :(得分:0)
案例A的作用是因为结果被推送到堆栈或向量,或者使用了任何结构,然后终止该特定路径。如果有返回,它会启动堆栈的解析并退回前面的迭代。因此,在案例B中,只能找到一个结果。