我正在尝试使用一个名为value的参数并创建一个将其除以2然后递增计数器的函数。当值达到1时,我想返回计数器,显示在达到1之前,值被除以2的次数。到目前为止,我有
var count = 0;
function binary_seq(value) {
while(value > 1) {
Math.floor(value/2);
count++;
if (value == 1) {
return count;
}
}
}
答案 0 :(得分:2)
我不知道为什么要在javascript中计算基数为2的对数。也许它是挑战或家庭作业的一部分,但有人必须成为提及标准&解决这个问题的简单方法,今天有人就是我。
Math.ceil(Math.log2(n)+1);
答案 1 :(得分:1)
function binary_seq(value) {
var count = 0;
while(value >= 1) {
value /= 2;
count++;
}
return count;
}
答案 2 :(得分:1)
这应该可以解决问题。
function binary_seq(value) {
var count = 0;
while(value > 1) {
value = Math.floor(value/2); // Update the value of `value`
count++;
}
return count; // Return the value of count
}
document.write(binary_seq(1024))

此外,您无需在功能范围之外定义count
答案 3 :(得分:0)
4年后的2019年7月,我正在回答,我知道它写得有点长,因为我还没有正确学习ES6,所以现在检查一下=>
let input = document.getElementById("decimal");
let ans = document.getElementById("answer");
let btn = document.getElementById("get");
let tryagian = document.getElementById("tryagain");
btn.onclick = function(){
let inVal = input.value;
if(inVal !== ``){
let x = inVal;
let arreyOfNumns = [];
while (x >= 1) {
let nums = (Math.ceil(x % 2));
arreyOfNumns.push(nums);
;
x = Math.floor(x/2);
}
let ansfinall = arreyOfNumns.reverse().join("");
ans.innerHTML = `${inVal} in binary is ${ansfinall}`;
}
}
tryagian.onclick = function(){
input.value = ``;
ans.innerHTML = ``;
}
<input type="number" id="decimal">
<button id ="get">Find Out</button>
<button id ="tryagain">Try again</button>
<p id="answer"></p>