首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3变量序列和

3变量序列和
EN

Stack Overflow用户
提问于 2018-12-14 01:01:02
回答 3查看 84关注 0票数 1

所以基本上有两个从i到j和j到k的序列,例如3到5和5到2,我们需要知道和。3+4+5+4+3+ 2。我的代码不工作。

代码语言:javascript
复制
var arr = [];
var sum = 0;

函数pushIn(i,j,k){

代码语言:javascript
复制
    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];
    }
}

}

EN

回答 3

Stack Overflow用户

发布于 2018-12-14 01:05:24

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-12-14 01:12:33

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

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

在你的例子中,我假设你希望循环被迭代,除非它小于或等于k,因此你需要让它成为>=,这样条件才能满足,循环将被迭代。

代码语言:javascript
复制
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));

票数 0
EN

Stack Overflow用户

发布于 2018-12-14 01:13:54

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

代码语言:javascript
复制
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));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53766730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档