CygwinのC++ 14とWindows 10のMingwでこのコードを実行しようとしましたが、両方ともランタイムエラーが発生しています。しかし、Ubuntu 16.04では問題なく動作します。C++の100000回帰呼び出しでランタイムエラーが発生する
#include <iostream>
using namespace std;
int rec(int n){
if(n == 0) return 0;
return 1 + rec(n-1);
}
int main(){
int k = 123456;
cout << rec(k) << endl;
return 0 ;
}
しかし、私は^ 4 10にいくつかの番号にkの値を変更した場合には、この奇妙な行動の背後にある理由は何ができるか= 12345 Kのような窓10、上でも動作しますか?
各再帰呼び出しにはいくらかのメモリが必要なため、実行環境にはあまりにも多くのものがあります。そのため、深い再帰を避ける必要があります。 – StoryTeller
スタックサイズが制限されています。明らかに。 – iBug
スタックが爆発しています。 – Ron