所以基本上有两个从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];
}
}}
发布于 2018-12-14 01:05:24
我认为问题出在你的第二个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];
}希望这能有所帮助
发布于 2018-12-14 01:12:33
在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));
发布于 2018-12-14 01:13:54
您可以使用.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));
https://stackoverflow.com/questions/53766730
复制相似问题