【问题标题】:Initializing Variable Only Once in Matlab Recursive Function在 Matlab 递归函数中只初始化一次变量
【发布时间】:2015-08-12 04:32:20
【问题描述】:

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

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

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

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

【问题讨论】:

  • 所以你要计算递归调用的次数?

标签: matlab recursion


【解决方案1】:

在我想设置d=d+1之后立即。

那它用在什么地方呢?

我遇到此类问题的经验表明,要么我做错了什么,要么有更好的方法。

声明变量 persistent 将记住连续调用的值。

【讨论】:

    【解决方案2】:

    最直接的方法是使用 as 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 调用对性能有一点影响。至少有一个是我的性能瓶颈。虽然适合大多数应用程序,但这并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      相关资源
      最近更新 更多