因此,从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];
}
}
}
答案 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));