Я пытаюсь получить код, который нужно запустить, но застрял. У меня есть массив размеров var sizes = [1,2];
, и у меня есть длина, я хочу достичь len = 3;
. Я хочу напечатать все возможности для достижения этой длины, используя мои заданные размеры, то есть: [1,1,1], [2,1], [1,2].Javascript: печать всех возможных перестановок для получения суммы
Я попытался это до сих пор:
var sizes = [1,2]; // possible sizes to pick
var start_len = 3; // length I want to reach
var arr = [];
var main = function(len){
if(len == 0){arr = [];} //clear the array after I got to full length
if(len >= 1){ // try adding 1
B(1,len, arr);
}
if(len >= 2){ // try adding 2
B(2,len, arr);
}
}
var add_and_call_again= function(elem, len, arr){
arr.push(elem);
if(len-elem == 0){ // if got to full length
console.log(arr);
}
main(len-elem); // add next element with less length to fill
}
main(start_len);
Что я получил [1,1,1] и [2,1], а также [2] - не уверен, что пошло не так. Заранее спасибо.
EDIT: Мой вопрос показывает мой код, но то, что я хочу понять, является псевдокодом для этого. Мне не хватает чего-то, и я не знаю, что
Слишком загадочный. Используйте значащие имена в своем коде и объясните это. Кроме того, используйте отладчик (переполнение стека ** не является отладчиком **) – Amit
Поиск проблемы ранца в google, похоже, похоже –
Что это за функция 'B'? – SteamDev