Выбор ответа Junior Перебор с возвратом спрашивают часто обновлено
Забыли копию
Вопрос
Что выведет код?
const res = [], path = [];
function go(i, nums) {
res.push(path);
for (let j = i; j < nums.length; j++) {
path.push(nums[j]);
go(j + 1, nums);
path.pop();
}
}
go(0, [1, 2]);
console.log(JSON.stringify(res));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [[], [], [], []]. В res кладётся ссылка на один и тот же массив path.
Варианты ответа
[[], [1], [1, 2], [2]][[], [], [], []]правильный ответ[[1, 2]][[1], [2]]
Разбор
В res кладётся ссылка на один и тот же массив path. После всех pop он пуст, поэтому выводятся четыре пустых массива. Нужно res.push([...path]).
- Корректный список подмножеств получится только с копией.
- Остальные варианты не соответствуют ни правильному, ни ошибочному поведению.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.