Я хочу преобразовать рекурсивную функцию в итеративную. То, что я обычно делаю, я инициализирую очередь, поставил первое задание в очередь. Затем в цикле 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, этот метод будет убийцей производительности.
Существует ли разумный способ использования очереди в MATLAB?
Как насчет других структур данных?