以二进制计数

时间:2014-02-06 08:43:16

标签: javascript

我只是在学习编程,并试图让程序以二进制计算。

我创建了一个可以将提供的十进制转换为二进制的函数,它看起来工作正常,但是当我尝试使用for循环向上计数时,我的浏览器冻结了,我无法理解为什么。使用类似的while循环产生我需要的结果。

问题是在底部注释掉了。请帮忙弄清楚我在这里做错了什么。

这是我的代码:

function isOdd(num) {return num % 2};

var toBinary = function (number) {
 ints = [];
 binary = [];
 ints.push(Math.floor(number));

 while (number >= 1) {
     number = (Math.floor(number))/2;
     ints.push(Math.floor(number));
 }

 for (i=ints.length-1;i>=0;i--) {
     if (isOdd(ints[i])) {
         binary.push(1);
     } else {
         binary.push(0);
     }
 }

 if (binary[0] === 0) {
     binary.splice(0,1);
 }

 return binary;

};

var count = 0;
while (count <= 50) {
 console.log(toBinary(count));
 count++;
}

/*
for (i=1;i<=50;i++) {
 console.log(toBinary(i));
}
*/

2 个答案:

答案 0 :(得分:1)

您尚未在i函数中声明toBinary,因此在最后一个循环中i的每次调用都会重新定义toBinaryi永远不会达到50岁。

使用var声明变量,如下所示:

var toBinary = function (number) {    
   var ints = [],
       binary = [],
       i;
    :
}

答案 1 :(得分:1)

使用for (var i=ints.length-1;i>=0;i--)for (var i=1;i<=50;i++),否则i将成为全局变量,并且会在toBinary内覆盖。