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

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

Risposta accettata

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

Più risposte (1)

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

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!