Листинг
function sum(array) {
if(!Array.isArray(array)) throw new Error('Argument must be an Array')
let _sum = 0;
rec(0, array);
function rec(index, array) {
if(!array) return;
if(index === array.length) return;
const mulVal = array.filter((_, i) => {
return i !== index;
}).reduce((pre, nex) => {
return pre * nex;
});
_sum += mulVal;
rec(++index, array);
}
return _sum;
}
Тест
sum([1, 2, 3, 4]); // 50