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