Показать сообщение отдельно
  #1 (permalink)  
Старый 20.02.2017, 17:49
Новичок на форуме
Отправить личное сообщение для Pavel Terkin Посмотреть профиль Найти все сообщения от Pavel Terkin
 
Регистрация: 20.02.2017
Сообщений: 2

Переделка вложенных циклов в рекурсию
Дано: массив массивов из цифр.
Надо вывести число сочетаний из всех массивов. Сделал это вложенными циклами. Проблема в том, что число циклов вариативно, а переделать их в рекурсию не получилось.
В примере ниже на входе подается arr = [[1,2,4], [1,2,4]]
Получаем: 11 12 14 21 22 24 41 42 44
Код:
"use strict";
function getPINs(observed) {
var arr = observed.join('').split('');
var keyVariationObj = {0:[0,8],1:[1,2,4],2:[1,2,3,5],3:[2,3,6],4:[1,4,5,7],5:[2,4,5,6,8],6:[3,5,6,9],7:[4,7,8],8:[0,5,8],9:[6,8,9]};
var temp = '';
var counter = 0;

  for (var i=0;i<arr.length;i++) {
    arr.splice(i,1,keyVariationObj[arr[i]]); 
	counter++; // для глубины рекурсии	      
  }

//переделываю этот блок
for (var i=0;i<arr[0].length;i++) {
  for (var j=0;j<arr[1].length;j++) {       
    temp =  temp + arr[0][i] + arr[1][j]+' ';
  }
}
/*
function fillRezult(counter) {
  if (counter>0) {
      temp = temp + arr[counter-1].forEach(function(item) { 
	  return item + fillRezult(counter-1) + ' ';
	  });
  return temp;	
  }
  else {return '';}
} */ 
return temp;
} 

console.log (getPINs(["11"]));
PS
Также думал над вариантом создать портотип функции цикла циклов, которая будет модфифицироваться взависимости от входа, но тут знаний вообще не хвататет. И на "просторах" даже не нашел - возможен ли такой путь в JS.

Заранее спасибо за участие.
Ответить с цитированием