c++ - 为什么这个递归函数会崩溃?

标签 c++ crash segmentation-fault

    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/

相关文章:

c++ - 如何在c++中检查对象类型

c++ - 如何在 C 中读取导入目录表

c - Sscanf 问题和从命令行读取

c - 找不到段错误

c++ - linux中调用bg时应该执行什么状态

c++ - SQLite - 编码问题

php - ini_set ('memory_limit' ) 导致 php 崩溃

ios - 测试中的 iPhone 应用程序几天后崩溃

c++ - Cocos2d-x 3.7 C++ CCLoad UIPageView 崩溃

c++ - 为什么存储此 vector 会出现段错误?