Предположим, что у меня есть рекурсивное, а также итеративное решение (с использованием стека) с некоторой проблемой, например. предварительный обход бинарного дерева. С текущими компьютерами с памятью есть ли преимущество использования рекурсивного решения над итеративной версией или наоборот для очень больших деревьев?Рекурсия против итерации в отношении использования памяти
Я знаю, что для некоторых рекурсивных решений, в которых повторяются подзапросы, при использовании рекурсии есть дополнительные затраты времени и памяти. Предположим, что это не так. Например,
preOrder(Node n){
if (n == null) return;
print(n);
preOrder(n.left);
preOrder(n.right);
}
против
preOrder(Node n){
stack s;
s.push(n);
while(!s.empty()){
Node node = s.pop();
print(node);
s.push(node.right);
s.push(node.left);
}
}
Предполагается, что 'посещение' должно быть' preOrder'? –
Спасибо, что заметили это. –
Можно подумать, что при использовании рекурсии память всегда будет в стеке. Хотя с итерацией вы можете решить выделить ее в кучу. –