在这种情况下,编译器是否可以识别尾递归?
void f(int x) {
if (x == 1) {
/* do_1... */
}
else if (x == 2) {
/* do_2... */
}
else if (x == 3) { // here, we want do_2 and do_3; the order doesn't matter
/* do_3... */
f(2); // this should be tail recursive
}
else if (x == 4) {
/* do_4... */
}
}
在 f(2);
之后放置一个 return;
是否有助于编译器将其识别为尾递归情况?
最佳答案
识别尾调用优化机会的编译器应该可以在特定用例中轻松识别它。
关于c++ - 复杂的尾递归案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20449522/