我想将递归函数转换为迭代函数。我通常做的是,我初始化一个队列,将第一个作业放入队列。然后在一个 while 循环中,我使用队列中的作业并将新作业添加到队列中。如果我的递归函数多次调用自身(例如走一棵有很多分支的树),则会添加多个作业。伪代码:
queue = new Queue();
queue.put(param);
result = 0;
while (!queue.isEmpty()) {
param = queue.remove();
// process param and obtain new param(s)
// change result
queue.add(param1);
queue.add(param2);
}
return result;
不过我在 MATLAB 中找不到任何类似队列的结构。我可以使用向量来模拟队列,其中将 3 添加到队列就像:
a = [a 3]
删除元素是
val = a(1);
a(1) = [];
如果我正确使用 MATLAB,这种方法将成为性能 killer 。
有没有一种在 MATLAB 中使用队列的合理方法?
其他数据结构呢?
最佳答案
如果您坚持使用正确的数据结构,您可以在 MATLAB 中使用 Java:
import java.util.LinkedList
q = LinkedList();
q.add('item1');
q.add(2);
q.add([3 3 3]);
item = q.remove();
q.add('item4');
关于data-structures - MATLAB 中有 "queue"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142190/