初心者からC++プログラミングとコンピュータシステムのアーキテクチャまで、私はまだC++の基礎を学んでいます。昨日、私は再帰関数について読んので、私は自分自身を書くことにした、ここで私が書いたものだ:(非常に基本的な)再帰関数によるスタックオーバーフロー
int returnZero(int anyNumber) {
if(anyNumber == 0)
return 0;
else {
anyNumber--;
return returnZero(anyNumber);
}
}
をそして私が行うときに、この:int型ZERO1 = returnZero(4793);スタックオーバーフローが発生しますが、値4792をパラメータとして渡すと、オーバーフローは発生しません。
理由は何ですか?
はたぶん大きな値がスタックをオーバーフローするために必要な正確にいただきましたでしょうか? – Listing
5000を試してみてください - おそらくスタックオーバーフローします。あなたのシステムにはどれくらいのメモリがありますか? – Silas
あなたのスタックがなぜ特定のサイズを持っているのか尋ねていますか? –