负循环while循环是无限循环 - 尝试在没有操作数的情况下添加

时间:2017-02-14 22:38:40

标签: javascript algorithm

我正在研究一种算法,你应该在不使用+或 - 的情况下添加2个整数。所以我拿了两个参数,把它们放在一个数组中,应用了一个forEach并将一个计数器递增一个,因为每个元素都计算到它的下降到0.就这样。

.form-group

这很好用。但是,当我通过leetCode运行它时,其中一个测试用例的数字为负数。我错误地认为所有案件都是积极的。我重写了这样的算法,以解决负面问题。

function test(a, b){

  var array  = [], counter = 0;
  array.push(a,b);
  array.forEach(function(element){
    while (element > 0) {
      counter ++;
      element --;
    }
  })

  return counter

}

这在纸上运行良好,但是当我在终端中运行时它会陷入循环。至少我认为确实如此。没有显示错误消息,我已经安慰记录了我能想到的每个位置的所有变量,而不是无休止的流控制台日志编号,这是我不小心创建无限循环时通常会发生的情况,光标就在那里直到我按下ctrl + c。

任何想法导致这种奇怪的行为?当我用

进行测试时
function test(a, b){

  var array  = [], counter = 0;
  array.push(a,b);
  console.log(array);
  array.forEach(function(element){
    if (element > 0){    
      while (element > 0) {
        counter ++;
        element --;
      }
    } else if (element < 0) {
        while (element < 0);
          counter --;
          element ++;
    }
  })

  return counter

}

我希望返回0,

显然它一直在其他方面工作,然后放置不好的括号和拼写错误。谢谢!

1 个答案:

答案 0 :(得分:3)

你的while循环存在逻辑问题:

while (element < 0);
      counter --;
      element ++;

应该是

while (element < 0) {
   counter --;
   element ++;
}

更改后,您的测试用例开始正常工作。