【问题标题】:Recursion limit? [closed]递归限制? [关闭]
【发布时间】:2015-05-18 10:03:28
【问题描述】:

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

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

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

【问题讨论】:

  • 能否附上相关代码?
  • 你的笔记本电脑的物理内存量和你的旧电脑一样吗

标签: matlab recursion limit


【解决方案1】:

500 的递归很大,你确定代码是好的吗?还是您经常复发?


假设你的代码很好:

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

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

对此您无能为力(如果您的代码正确)。基本不要在旧电脑上使用大递归。

【讨论】:

  • 非常感谢。我设法安装了我需要在较新的计算机上工作的程序,并且递归限制没有问题。但我面临数周的错误,没有人回答在 NI 论坛上给我。我正在使用 AWR-vss 程序,我正在使用 MATLAB 块,当我运行整个项目时,它给了我错误:无法读取 MATLAB 矩阵。我不知道怎么办了。如果你能提供一些想法,我将不胜感激。
猜你喜欢
  • 2020-06-25
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2021-04-28
相关资源
最近更新 更多