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

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

Respuesta aceptada

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

Más respuestas (1)

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

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!