我正在研究一种算法,你应该在不使用+或 - 的情况下添加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,
显然它一直在其他方面工作,然后放置不好的括号和拼写错误。谢谢!
答案 0 :(得分:3)
你的while循环存在逻辑问题:
while (element < 0);
counter --;
element ++;
应该是
while (element < 0) {
counter --;
element ++;
}
更改后,您的测试用例开始正常工作。