我有一个关于递归的堆栈问题

时间:2019-10-11 13:43:58

标签: c++ recursion

#include <iostream>
 using namespace std;

int f(int x) {
    int erg;
    if (x >= 1000) {
        erg = x - 3;
    }
    else {
        f(f(x + 5));
    }
 return erg;
}

int main() {

    cout << "Result: " << f(84) << endl;
    return 0;
}

所以我得到了错误线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeef3ffff8)

1 个答案:

答案 0 :(得分:3)

您正在定义递归函数,但未正确定义退出条件。 我确定的(相互关联的)问题是:

    如果使用erg子句,则
  • else会返回未初始化的值。
  • 对于f子句中else的结果,您没有做任何事情。您是否打算将其分配给erg
  • 这时为什么还要erg?您可以直接从ifelse子句中返回。