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循环,然后是什么阻止了你?:)是什么阻止了我?实际上什么都没有。你的工作目标是什么?它应该做什么(大图)?