编译器最大递归次数计算(C++),visual stdio 2013最大递归次数修改

由于今天我遇到矩阵连乘算法递归算法程序一直崩溃,就猜测是不是递归次数有限制,于是就有了这篇文章,

希望可以帮到有相关问题的小伙伴!

1首先想到的就是重复递归看到什么时候结束:

#include<iostream>
using namespace std;

void s(int count)
{
cout << count << "  ";
s(++count);
}

int main()
{
s(1);
return 0;
}


如图显示的是4709,之后程序就崩溃了,当时我在想在程序结束的时候肯定缓冲区还有没输出到屏幕的数

于是想到了cerr:cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,缓冲区的目的,就是减少刷屏的次数,一下输出一串字符

2

#include<iostream>
using namespace std;

void s(int count)
{
cerr << count << "  ";
s(++count);
}

int main()
{
s(1);
return 0;
}


这次是4716,最后又手贱了觉得可能还不对,于是开始了一个一个数的尝试

扫描二维码关注公众号,回复: 2689884 查看本文章

3

#include<iostream>
using namespace std;

int s(int count)
{
if (count > 4790)//默认为4792次,这是我试出来的,如果写的是4791就会溢出,呵呵
return 1;
else 
return s(++count)+1;
}

int main()
{
cout<<s(0);
return 0;
}

递归实际上利用的是系统的函数堆栈,默认的大小我记得是2M,因此如果递归较多可能会导致堆栈溢出而崩溃。
如果想要修改则需要找到,调试-->调试属性

想要多少有多少!!

 
 
 
 




猜你喜欢

转载自blog.csdn.net/changer_WE/article/details/80343729