Дан массив с числами arr, в котором необходимо найти комбинации чисел суммой которых является arg. И вернуть сумму их индексов. Комбинации не должны повторятся. Был написан такой код:
function pairwise(arr, arg) {
var res = 0;
var pairs = [];
var FindPair = function(a1){
if(pairs.length){
for(i = 0; i < pairs.length; i++){
if(pairs[i] === a1){
return false;
}
}
}
return true;
};
for(i = 0; i < arr.length-2; i++){
for(j = i+1; j < arr.length; j++){
if(arr[i] + arr[j] === arg){ //4 + 5 == 7 //true
if(FindPair(arr[i]+'+'+arr[j])){ //проверяет наличие комбинации
pairs.push(arr[i]+'+'+arr[j]);//добавление комбинации
res += i + j;
}
}
}
}
return res;
}
pairwise([1, 4, 2, 3, 0, 5], 7);
который при выполнении
pairwise([1, 4, 2, 3, 0, 5], 7)
допускает условие, что
4 + 5 == 7
, а при
pairwise([0, 0, 0, 0, 1, 1], 1)
уходит в бесконечный цикл, чего быть не должно. Подскажите в чем ошибка?