エラー:500 の最大の再帰限界値に達しました について

26 views (last 30 days)
Shintarou Sugiyama
Shintarou Sugiyama on 28 Dec 2017
Edited: Jiro Doke on 3 Jan 2018
matlabコマンドウィンドウ上に下記のメッセージが出力されました。
500の最大の再帰限界値に達しました。限界値を変更するには、set(0,''RecursionLimit'',N) を使用してください。利用可能なスタック空間を超えると、MATLAB またはコンピューター、あるいはその両方がクラッシュする可能性があります
上記のメッセージ内の MATLAB またはコンピューター、あるいはその両方がクラッシュする可能性がありますとは具体的にどのような症状なのでしょうか。
編集中のファイルが破棄される等なら許容できるのですが、コンピューターが壊れる/使えなくなる事が起こりうるのか心配しています。

Accepted Answer

Jiro Doke
Jiro Doke on 28 Dec 2017
Edited: Jiro Doke on 3 Jan 2018
これはあくまでも経験上から回答ですが、コンピュータがクラッシュするというのは壊れて使えなくなるというより、フリーズしたり強制終了したり再起動されたりする様な状況をいいます。 スタックオーバーフロー に関連しています。だいたい再起動すれば元に戻る事が多いですが、勿論保証できません。
まずは、そもそも作られたプログラムは500回以上再帰的に実行されるべきものなのかをご確認ください。間違いの可能性もありますので。クラッシュしても回復する可能性はありますが、それを期待したプログラミングはできれば避けた方が良いかもしれません。
どうしても、再帰的に書く必要があるならば
set(0,'RecursionLimit',N)
で上限を変えてみてください。

More Answers (1)

mizuki
mizuki on 28 Dec 2017
どのような状況でこれが起こっているのか不明ですが、警告メッセージ通りに理解すると、コンピュータもクラッシュする可能性があると考えられます。
現在の N の設定値は 500 とのことですので、
set(0,''RecursionLimit'',N)
の N の値を 500 よりも大きな値にしてみてはいかがでしょうか。

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!