[英]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; }
Your code is going into infinite loop because this while(!binary.every(zeroCheck))
is true. 你的代码进入无限循环,因为这时
while(!binary.every(zeroCheck))
是真的。 Infinite loops occur mostly in while loop while(true)
will go to a infinite loop. 无限循环主要出现在while循环中,
while(true)
将进入无限循环。
Try changing this line !binary.every(zeroCheck)
to binary.every(zeroCheck)
because binary.every(zeroCheck)
returns a false. 尝试将此行更改为
!binary.every(zeroCheck)
为binary.every(zeroCheck)
因为binary.every(zeroCheck)
返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.