我遇到了有关递归的堆栈问题

I have got a stack problem concerning recursion

本文关键字:堆栈 问题 递归 遇到      更新时间:2023-10-16
#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(

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

  • 如果采用else子句,则返回未初始化的erg
  • 您没有对else条款中f的结果执行任何操作。您是否打算将其分配给erg
  • 为什么在这一点上还要erg?您可以直接从ifelse子句返回。