Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在for循环递归函数中传递我前面的n个变量?_Matlab_Recursion - Fatal编程技术网

Matlab 如何在for循环递归函数中传递我前面的n个变量?

Matlab 如何在for循环递归函数中传递我前面的n个变量?,matlab,recursion,Matlab,Recursion,我有一个for循环递归函数,我想访问前面的n变量。我该怎么做呢 function Signal(arr,val) recu=length([arr 1]); if recu==1 return end for n=1:1:3-val n %%// now I want to save all my Previous n variables to pass to the next for loop%

我有一个
for
循环递归函数,我想访问前面的
n
变量。我该怎么做呢

function Signal(arr,val)


    recu=length([arr 1]);

    if recu==1
        return
    end

    for n=1:1:3-val
       n

       %%// now I want to save all my Previous n variables to pass to the next  for loop%

       val=n;
       Signal(arr(1:1:end-1),val)

    end

end

当问题可以通过将其划分为同一问题的较小实例来解决时,递归非常有用。例如,fibonacci序列,其中第n个数是前面两个数的和,fib(n)=fib(n-1)+fib(n-2)。这意味着您可以通过对前两个数字调用相同的函数来计算第n个数字

function y = fib(n)

if (n==0 || n==1)
    y=1;
else
    y = fib(n-1)+fib(n-2);
end

end
请注意,函数完全不知道上一个递归中发生了什么。另外,请注意,Matlab中的递归函数需要返回值,因为Matlab总是传递值。当然,这个特殊的例子可以用迭代方法更有效地解决,但由于其明显的递归连接,它通常用于教育目的。另一个例子是快速排序(有用,查找!),它以一种有效的方式对子数组进行排序


您的问题需要来自以前调用的信息,这不适合递归。如果您真的需要这样解决它,您必须将所有需要的信息作为参数传递。没有其他方法可以为函数提供信息(虽然可以使用全局变量,但它在许多方面都令人不快,不推荐使用)。如果您觉得参数太多,可以将其作为结构传递。一个好的结构名称可以使函数更易于查看和阅读。

我不明白函数应该做什么,但是缺少一个返回值:
函数r=Signal(arr,val)
例如,我想将前一个for循环中的所有n个变量传递到下一个for循环,然后是什么阻止了你?:)是什么阻止了我?实际上什么都没有。你的工作目标是什么?它应该做什么(大图)?