c++ - 复杂的尾递归案例

标签 c++ algorithm recursion tail-recursion

在这种情况下,编译器是否可以识别尾递归?

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/

相关文章:

c# - 在 Visual Studio C++ 中使用 DLL

c++ - 如何为 MFC CEdit ON_EN_SETFOCUS 实现事件处理程序?

c++ - Google 测试独立项目 - 如何让测试针对 C++ 项目运行

c++ - 如何在另一个类中设置静态变量?

c++ - 使用 lambda 函数时可能发生堆栈溢出?

mysql - 简单 MySQL 递归上的 Union

匹配医院名称的算法

arrays - 如何从数组中生成所有长度为偶数的子序列?

algorithm - 需要配对算法 - 基于匈牙利语?

java - 计算序列中尾随零的数量