递归限制?

时间:2015-05-18 10:03:28

标签: matlab recursion limit

当我在笔记本电脑上运行我的代码时,它运行时没有错误,但是当我从旧计算机上运行它时,它会抛出错误:

  

达到最大递归限制500。使用set(0,' RecursionLimit',N)更改限制。请注意,超出可用堆栈空间可能会导致MATLAB和/或计算机崩溃。 coder.allowpcode错误

我需要从旧计算机运行我的代码。我还将递归限制设置为更大的值但我的MATLAB程序崩溃。

1 个答案:

答案 0 :(得分:2)

500递归是相当大的,你确定代码是好的吗?或者你经常反复发作?

假设代码很好:

您的Matlab程序崩溃是因为您导致了Stackoverflow(是的,这就是为什么这个网站有这个名称和徽标!)。

计算机中的堆栈内存是一个存储器,用于保存“已调用该函数的位置”的链接。如今,现代计算机有一个不错的堆栈内存,但旧的没有。如果溢出该内存,当代码的执行“完成”并将函数输出到父函数时,最终它将不知道去哪里(因为堆栈内存中没有足够的空间)。这将导致系统崩溃(或Matlab)。

你无能为力(如果你的代码是正确的)。基本上不要在旧计算机中使用大递归。