c ++递归退出没有明显的原因

Cri*_*oss 5 c++ ubuntu recursion gcc infinite

我使用递归编写了一个函数.事实证明,在测试时,该函数在没有任何明显原因的情况下被终止,而递归仍然在运行.

为了测试这个,我写了一个无限的递归.

在我的电脑上,此功能在约2秒后退出,最后一个输出约为327400.最后一个数字并不总是相同.

我使用的是Ubuntu Lucid Lynx,GCC编译器和Eclipse作为IDE.如果有人知道问题是什么以及我如何阻止程序退出,我会非常高兴.

#include <iostream>

void rek(double x){
    std::cout << x << std::endl;
    rek(x + 1);
}

int main(int argc, char **argv) {
    rek(1);
}
Run Code Online (Sandbox Code Playgroud)

dle*_*lev 5

你最有可能溢出堆栈,此时你的程序将被立即杀死.堆栈的深度将始终限制您可以递归的数量,如果您达到该限制,则意味着您的算法需要更改.