我的个人网站www.liujianhua.xyz
今天在学数据结构的时候用了一个简单的递归程序,但是崩溃了,我就想是不是有规定递归次数,写下博客记录。
先看程序:
#include <iostream>
using namespace std;
void PrintfN(int n)//递归输出1~n
{
if (!n)
return;
printf("%d ", n);
PrintfN(n - 1);
}
int main()
{
PrintfN(10000);
system("pause");
return 0;
}
一个简单的输出10000~1的函数,下面看报错:
很明显,内存出错,我就想到看到底递归了多少次,
发现递归了10000-5244=4756次。接下来我又简单改变了函数,再次递归,发现递归次数变了,这就说明不是递归次数有限制,那就一定是内存有限制,递归使用的是函数堆栈区,肯定是有限制的,限制的东西去属性里面找就行了,进去一看,果然有限制
默认是1MB,所以递归会受到限制,如果不想被限制,只需要将它改了就行。
或者最简单的方法,改为循环,比递归快,比递归省内存!!!!
我是Pico.