Вопрос проверяет понимание итеративного обхода многомерных массивов с использованием стека для замены рекурсии.
Рекурсия — естественный способ обхода вложенных структур, но она может привести к переполнению стека вызовов при большой глубине. Использование явного стека позволяет контролировать процесс и избежать этой проблемы.
Мы создаем стек (обычный массив) и помещаем в него исходный массив. Затем в цикле извлекаем последний элемент. Если это массив, мы добавляем все его элементы обратно в стек. Если это не массив, мы обрабатываем значение (например, выводим в консоль).
function traverseArray(arr) {
const stack = [arr];
while (stack.length > 0) {
const item = stack.pop();
if (Array.isArray(item)) {
// Добавляем элементы в обратном порядке для сохранения порядка
for (let i = item.length - 1; i >= 0; i--) {
stack.push(item[i]);
}
} else {
console.log(item);
}
}
}
const nested = [1, [2, [3, 4], 5], 6];
traverseArray(nested);
// Вывод: 1, 2, 3, 4, 5, 6Вывод: Использование стека для обхода многомерных массивов — это надежный способ избежать рекурсии, особенно когда глубина вложенности может быть большой или непредсказуемой.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию