在Matlab递归函数中初始化变量一次

时间:2015-08-12 04:32:20

标签: matlab recursion

有没有办法在第一次调用函数时在递归Matlab函数 中初始化变量?

该函数在函数内多次调用自身,我想在函数的最开始设置变量d=0,并在我想设置d=d+1之后立即设置。

每次调用该函数时,我都需要d=d+1。我想初始化函数内部的变量,我也不想将它作为函数的参数传递。

我觉得我需要声明一个全局变量,但是我仍然无法在每次调用函数时将其值更改为1时弄清楚如何这样做。

2 个答案:

答案 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电话的性能受到轻微打击。至少有一个是我的性能瓶颈。虽然适合大多数应用程序,但这并不重要。