循环和递减总和

时间:2015-07-02 00:32:16

标签: javascript loops

我无法弄清楚为什么我的减法金额不会起作用。它对于递增部分可以正常工作,但是如果第一个数组值大于第二个数组值,它似乎不会运行:

function sumAll(arr) {
  console.log(arr[0], arr[1]);
  var sum = 0;
  if (arr[0] < arr[1]) {
    for (var i = arr[0]; i <= arr[1]; i++) {
      sum += i;
      console.log(sum);
    }
  } else if (arr[0] > arr[1]) {
    for (var j = arr[1]; j >= arr[0]; j--) {
      sum += j;
      console.log("sec", sum);
    }
  }

  return sum;
}

sumAll([9, 3]);

2 个答案:

答案 0 :(得分:2)

已在评论中解释,但这里是代码:

因为在for循环中你有条件j >= arr[0]但是如果你有条件(arr[0] > arr[1])则在else中,因为for循环永远不会被执行。

以下是工作代码:

function sumAll(arr) {
  console.log(arr[0], arr[1]);
  var sum = 0;
  if (arr[0] < arr[1]) {
    for (var i = arr[0]; i <= arr[1]; i++) {
      sum += i;
      console.log(sum);
    }
  } else if (arr[0] > arr[1]) {
    for (var j = arr[0]; j >= arr[1]; j--) {

      sum += j;

      console.log("sec", sum);
    }
  }

  return sum;
}

alert(sumAll([9, 3]););

答案 1 :(得分:1)

这应该有效:

function sumAll(arr) {
  console.log(arr[0],arr[1]);
  var sum=0;
  if(arr[0] < arr[1]){
    for(var i = arr[0]; i <= arr[1]; i++  ){

      sum += i;
      console.log(sum);

    } 
  } else if(arr[0] > arr[1]) {

    for(var j = arr[1]; j <= arr[0]; j++  ){

      sum += j;

      console.log("sec",sum);
    }

  }

  return sum;
}

sumAll([9,3]);

当数字小于或等于数组中的最大数字时,我所做的就是使循环结束。