Javascript 正在尝试查找数组中3项的二进制。获得无限循环

Javascript 正在尝试查找数组中3项的二进制。获得无限循环,javascript,recursion,infinite-loop,Javascript,Recursion,Infinite Loop,这就是我所做的。用于循环遍历所有元素,然后通过递归和返回找到二进制 var temp3 = [57,80,95]; var temp2 = []; var temp4 = ''; var r; for(i=0;i<temp3.length;i++) { var r = temp3[i]; temp2.push(binary(r)); } function binary(r) { console.log(r); if (r === 0) return r; tem

这就是我所做的。用于循环遍历所有元素,然后通过递归和返回找到二进制

var temp3 = [57,80,95];
var temp2 = [];
var temp4 = '';
var r;

for(i=0;i<temp3.length;i++) {
var  r = temp3[i];    
temp2.push(binary(r));
}
function binary(r) {
    console.log(r);
  if (r === 0) return r;
  temp3 = (r % 2) + temp3;
  binary(Math.floor(r / 2));
  return temp3;
}
//1100010
console.log(temp2);
var temp3=[57,80,95];
var temp2=[];
var temp4='';
var-r;

对于(i=0;i而言,写入二进制函数的正确方法如下-

function binary(r, i = 0) {
    console.log(r);
    if (r === 0) return r;
    return (r % 2) * Math.pow(10, i) + binary(Math.floor(r / 2), i + 1);
}

虽然有很多方法可以将int转换成二进制,但我觉得这是最简单的方法之一。如果您想进一步解释或澄清,请在下面进行评论。

您可以使用位运算符和递归轻松地将数字转换成二进制。

-

const binary=x=>
x<2
?字符串(x)
:二进制(x>>1)+字符串(x&1)
console.log(二进制(57))//111001
console.log(二进制(58))//111010
console.log(二进制(80))//1010000
log(二进制(95))//1011111
log(二进制(1234567))//1001011010000111

console.log(二进制(12345678))//101111000110001011110
什么是
二进制
呢?你的函数将
temp3
从原始数组更改为一个数字。而且,没有递归。编辑哦,等等,是的,isHi Suraj,我实际上是个新手。因此,我不应该使用任何其他内置函数。如果你能帮我提供更多信息,我真的很感激on.谢谢!@jithinsurendran实际上,这个函数使用了默认参数的概念,否则您需要使用两个参数调用二进制函数(比如
binary(r,0)
,另一个是Math.pow(10,i)这实际上提高了10到i的幂。所以你实际上可以删除这两个东西,但是你需要添加更多不必要的代码。一如既往的好。我认为第二个可能更简单,因为
const binary=(n)=>n==0?0:10*binary(n>>1)+(n&1)
我之前看过,觉得太复杂了。看不到。谢谢斯科特:D