有没有办法在第一次调用函数时在递归Matlab函数 中初始化变量?
该函数在函数内多次调用自身,我想在函数的最开始设置变量d=0
,并在我想设置d=d+1
之后立即设置。
每次调用该函数时,我都需要d=d+1
。我想初始化函数内部的变量,我也不想将它作为函数的参数传递。
我觉得我需要声明一个全局变量,但是我仍然无法在每次调用函数时将其值更改为1时弄清楚如何这样做。
答案 0 :(得分:0)
我想立即设置
d=d+1
。
然后它在哪里使用?
我对这类问题的经验表明,无论是我做错了什么还是做得更好。
声明变量持久性将记住连续调用的值。
答案 1 :(得分:0)
最简单的方法是使用persistent
声明。这看起来像这样:
function
persistent d
if isempty(d) %this is only true for the first call to the function
d=0;
end
d = d + 1;
%more function here
end
这实际上成为一个计数器,描述了函数被调用的次数。
那就是说,将d
作为参数传递给我更优雅,虽然我无法理解为什么。
persistent
电话的性能受到轻微打击。至少有一个是我的性能瓶颈。虽然适合大多数应用程序,但这并不重要。