复杂的尾部递归情况
Complicated tail recursion case
在这种情况下,编译器是否可以识别尾部递归?
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... */
}
}
将return;
放在f(2);
之后是否有助于编译器将其识别为尾部递归情况?
一个识别尾部调用优化机会的编译器在特定用例中识别它应该没有问题。
相关文章:
- 为什么这个递归没有得到它的基本情况?
- 递归楼梯中的基本情况
- C++ 循环链表的递归基本情况
- 视觉 在C++中,我试图在没有递归的情况下循环访问许多对象
- 在不使用递归的情况下求解所有 2D 字符串向量组合?(C++)
- 如何将递归函数(具有两个基本情况)转换为迭代函数
- 摆脱可变参数模板递归基本情况下不必要的类
- 具有空参数包的递归可变参数模板(以避免基本情况的重复)
- 递归返回函数,在特殊情况下不返回
- 是否有一个术语来表示"single mutex deadlock"(具有非递归互斥锁的死锁类型情况)?
- 递归最糟糕的情况时间复杂性
- 这段代码如何在没有任何循环语句或'goto'或递归的情况下循环?
- 在不使用递归的情况下将 FFT 应用于两个非常大的数字的乘法
- 递归计算在不使用静态局部变量,全局变量或静态函数的情况下,在递归函数中发生的环数
- 如何在没有递归的情况下删除链接列表
- OpenMP:即使在深度极限的情况下,递归任务也比顺序慢
- 可以在没有递归的情况下发现矩阵的决定因素
- 如何在不使用静态变量的情况下从递归函数中只调用另一个函数一次
- 递归函数是否可以在不将常量作为参数发送的情况下了解首次调用它的函数中的常量
- 如何在不使用递归的情况下获取二叉树的最小高度