3个变量序列之和

时间:2018-12-13 17:01:02

标签: javascript arrays function sequence

因此,从I到j和j到k基本上有两个序列。 例如3到5和5到2。 我们需要知道总和。 3 + 4 + 5 + 4 + 3 + 2。 而且我的代码无法正常工作。

var arr = [];
var sum = 0;

函数pushIn(i,j,k){

    for(var a = i; a < j; a++){
        arr.push(a);
    }

    for(var a = j; a == k; a--){
        arr.push(a);
    }
    for(var i = 0; i <arr.length;i++){
        sum += arr[i];
    }
}

}

3 个答案:

答案 0 :(得分:1)

我认为问题出在您的第二个for循环中 也许你应该试试这个

for(var a = i; a < j; a++){
    arr.push(a);
}

for(var a = j; a > k; a--){
    arr.push(a);
}
for(var i = 0; i <arr.length;i++){
    sum += arr[i];
}

希望这会有所帮助

答案 1 :(得分:0)

for循环中,第二个参数是一个比较器-执行代码块的条件

在第二个循环中,条件永远不会满足,因此它根本不会迭代。

在您的情况下,我假设您要迭代循环,除非该循环小于或等于k,因此您需要使其成为>=,以便满足条件并循环迭代。

var arr = [];
var sum = 0;

function pushIn(i, j, k) {

  for (var a = i; a < j; a++) {
    arr.push(a);
  }
  for (var a = j; a >= k; a--) {
    arr.push(a);
  }
  for (var i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}

console.log(pushIn(3, 5, 2));

答案 2 :(得分:0)

您可以使用.concat().reduce()来获得结果值:

let reducer = (i, j, k) => [].concat(
    Array.from({length: j - (i - 1)}, (_, index) => i + index),
    Array.from({length: j - k},  (_, index) => j - (index + 1))
).reduce((r, c) => r + c, 0);

console.log(reducer(3, 5, 2));