Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2014, 23:24
Новичок на форуме
Отправить личное сообщение для wolf_ Посмотреть профиль Найти все сообщения от wolf_
 
Регистрация: 05.08.2014
Сообщений: 3

Объясните как работает код
Помогите разобратся как работает код.
вот например что проверяет эта строка кода if( ! subResults.length );

почему item в скобках results.push([item].concat(subResults[j]))
и как здесь работает рекурсия

* Напишите функцию, которая из произвольного входящего массива выберет все комбинации чисел, сумма которых будет равняться 10
 *
 * @see [url]http://company.yandex.ru/job/vacancies/dev_int_yaservices.xml[/url]
 * @param {Array} ITEMS
 * @param {Integer} target
 * @example findCombinations([ 7, 10, 2, 5, 3, 1 ], 10) => [[7, 2, 1], [7, 3], [10], [2, 5, 3]]
 * @returns {Array}
 */
function findCombinations (ITEMS, target)
{
  var results = [],
      i = 0,
      l = ITEMS.length,
      item;
 
  for( ; i<l; i++ )
  { // Проходим массив значений
    item = ITEMS[i]; // Текущее значение
    if( item >  target ) continue; // Выходит за цель, отбросили, выходим
    if( item == target ) { results.push([item]); continue; } // Оно, цепляем, выходим
 
    var subResults = findCombinations(ITEMS.slice(i+1), target - item); // Ищем возможные варианты, исключая текущее значение
    if( ! subResults.length ) continue;// Возможностей нет, отбросили, выходим
 
    // console.log("subResults for", item, "is", subResults); // Все возможные варианты для текущего значения
 
    for( var j=0, k=subResults.length; j<k; j++ )
      results.push([item].concat(subResults[j])); // Склеиваем результат
  };
 
  return results;
};
 
console.log( findCombinations([ 7, 10, 2, 5, 3, 1 ], 10) );
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает Google Analytics: смотрю в "Инструментах разработчика" Chrome hrundel Общие вопросы Javascript 0 10.10.2013 19:31
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 04:40
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
Подскажите как правильно оформить код frolvict Общие вопросы Javascript 4 30.04.2010 10:51