2017-02-14 1 views
0

+または - を使用せずに2つの整数を追加するはずのアルゴリズムで作業しています。だから、私は2つの引数をとり、配列でスタックし、forEachを適用し、カウンタを1ずつインクリメントして、各要素が0になるまでカウントした。whileループは無限ループです - オペランドなしで追加しようとしています

function test(a, b){ 

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

    return counter 

} 

これは問題なく動作します。しかし、私がleetCodeを通してそれを実行したとき、テストケースの1つに負の数がありました。私は誤ってすべての症例が陽性であると仮定した。私はこのようなアルゴリズムを書き直し、ネガを説明しました。

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 

} 

これは紙では問題なく動作しますが、端末で実行するとループが発生します。少なくとも私はそれがそうだと思う。エラーメッセージは表示されず、私は思いつくことのできるあらゆる場所にすべての変数を記録していました。コンソールのログ番号を無限にストリーミングする代わりに、無意味なループを誤って作成したときにカーソルがちょうどそこに座ります私がCtrl + Cを押すまで。

この奇妙な動作の原因は何ですか?私は

console.log(text(1,-1)) 

でそれをテストするとき、私は0のリターンを期待する、

どうやらそれは他のすべての後、不十分置きブラケットとタイプミスに沿って働いていました。ありがとう!

+0

それはあなたが私のために期待どおりに実行され、私は0を得る。 – Chris

+0

奇妙な。多分私のコンソールです。 – nwimmer123

+0

また、書かれているようにleetCodeにタイムアウトするので、何かが間違っていなければなりません。 – nwimmer123

答えて

3

あなたのwhileループとロジックの問題があります。

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

は、その変更後

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

する必要があり、あなたのテストケースが正常に動作を開始します。

+0

ええ、それですが、今は2つの負の数に問題があるようです。フリックリンのタイプミス。 – nwimmer123

+0

奇妙なことに、 'test(-1、-1)'は私のために '-2'を返しました。まだ止まらずに走っていますか? –

+0

test(-12、-8)は-2も返します。私は今調査中です。私の腸はそれが正しくwhileループに当たらないと言います。 – nwimmer123

関連する問題