3 сумма переменной последовательности - PullRequest
0 голосов
/ 13 декабря 2018

Таким образом, в основном есть две последовательности от 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 голосов
/ 13 декабря 2018

В цикле 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));
0 голосов
/ 13 декабря 2018

Вы можете использовать .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));
0 голосов
/ 13 декабря 2018

Я думаю, что проблема заключается в вашем втором цикле 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];
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...