Maximum recursion limit of 500 reached请求帮助

来源:百度知道 编辑:UC知道 时间:2024/05/29 20:36:53
程序如下:
%函数定义
function[y,n]=sigshift(x,m,k)
% implements y(n)=x(n-k)
%[y,n]=sigshift(x,m,k)
%n=m+k;y=x;
n=-2:10;x=[1:7,6:-1:1];
[x11,n11]=sigshift(x,n,5);
subplot(2,1,1);stem(n11,x11);
xlabel('n');ylabel('x11(n)');
%运行程序如下
n= 1:4;x(1,n)=[1,2,3,4];[y,n] = sigshift(x,n,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.

你这是一个迭代函数,也就是这个函数在不断的递归调用自己,这是个比较浪费内存的行为,同时有可能形成死循环。MATLAB为了避免这种情况发生,把递归层数限制为500层,超过500层MATLAB会自动shut down程序。并不建议你用set函数改限制次数,因为有可能把电脑crash掉