2015-05-18 87 views
-4

当我在我的笔记本上运行我的代码运行没有错误,但是当我从一个旧的计算机上运行它,它抛出我的错误:递归限制?

Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer. Error in coder.allowpcode

我需要运行从旧computer.I集我的代码也递归限制到一个更大的值,但我的MATLAB程序崩溃。

+4

你能否包含相关的代码? – Whitebird

+0

物理内存是否与您的笔记本电脑上的旧计算机相同 – Nishant

回答

2

500递归很大,你确定代码好吗?或者你是否经常重复?


假设你的代码是好的:

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

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

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

+0

非常感谢。我设法安装了需要在较新的计算机上工作的程序,并且递归限制没有问题。但是我正面临几个星期的错误,没有人在NI论坛上回答我的问题。我正在使用AWR-vss程序,并且正在使用MATLAB模块,当我运行整个项目时,它给了我一个错误:无法读取MATLAB矩阵out.I不知道该怎么做了,我会很感激,如果你能提出一些想法。 – Oana