[英]Experiencing infinite loop in bits manipulation code in javascript
var decimalNumber = 77; var binaryBit = solution(decimalNumber); console.log(binaryBit); function solution (decimalNumber){ var binary=[], i=0, j=0, binary_operations=0, binary_modified=[]; while(decimalNumber > 0){ binary[i] = (decimalNumber%2); decimalNumber = Math.floor(decimalNumber/2); i++; } console.log(binary); binary = binary.reverse(); console.log(binary); while(!binary.every(zeroCheck)){ //comBinaryOperation(binary); //} //function comBinaryOperation(binary){ //for(var j=0; j<binary.length; j++){ binary[binary.length-1] = (binary[binary.length-1] == 1) ? 0 : 1; binary_modified = binary.slice(j+1, binary.length); console.log(binary_modified); if(binary_modified.every(zeroCheck)){ binary[j] = (binary[j] == 1) ? 0 : 1; } binary_operations++;j++; if(j == binary.length-1){j=0;} /*while (binary.every(zeroCheck)){ break; }*/ } //} /*if(binary.includes(1,-4) ){ binary_bit = 1; }*/ console.log(binary); return binary_operations; } function zeroCheck(element){ return element == 0; }
你的代碼進入無限循環,因為這時while(!binary.every(zeroCheck))
是真的。 無限循環主要出現在while循環中, while(true)
將進入無限循環。
嘗試將此行更改為!binary.every(zeroCheck)
為binary.every(zeroCheck)
因為binary.every(zeroCheck)
返回false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.