为什么将高数字传递给递归功能会使我的控制台停止响应

Why does passing high number to a function with recursion makes my console stop responding?

本文关键字:功能 我的 控制台 响应 递归 高数字 数字 为什么      更新时间:2023-10-16
int summation(int x) {
    if(x > 0) {
        return x += summation(x-1);
    }
    return x;
}

该功能可与较小的值一起工作,但接近100万,它压碎了我的控制台。

cout << summation(1000000);

我很好奇为什么会发生。

递归存在这个问题。对于每个调用,程序必须将数据保存在堆栈中。因此,当数字如此之大时,保存的数据也很大。您可能会在代码中看到堆叠的问题。