Выбор ответа 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], [1, 2], [2]]
  2. [[], [], [], []]правильный ответ
  3. [[1, 2]]
  4. [[1], [2]]

Разбор

В res кладётся ссылка на один и тот же массив path. После всех pop он пуст, поэтому выводятся четыре пустых массива. Нужно res.push([...path]).

  • Корректный список подмножеств получится только с копией.
  • Остальные варианты не соответствуют ни правильному, ни ошибочному поведению.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме