int g(int n) {
int x = g(n - 1);
if (x > 0) {
return x + 1;
} else {
return 1;
}
}
我的猜测是它与函数的第一行有关......但我不确定为什么会这样。
最佳答案
如果函数只是这样说:
int g(int n) {
return g(n - 1);
}
那么你显然不会期望它能工作,而是继续递归直到你用完堆栈空间并且程序崩溃。通过将递归放在函数的退出条件之前,您基本上就是这样做的。
您应该重写该函数,使其在 再次调用 g()
之前执行退出测试。
关于c++ - 为什么这个递归函数会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227749/