JS 判断一个数是否为 2 的 N 次幂
问题:
判断一个数(x)是否为 2 的 N 次幂,如果是,返回是 2^n 中的 n,如果不是返回 false
约束: x <= 2^800
SB 青年版
不用说,递归肯定是最 sb 的版本:
function power2sb(x, n) {
n = n || 0;
if (x === 1) {
return n;
}
if (x < 1) {
return false;
}
return power2sb(x / 2, n + 1);
}
结果测试:
console.log(power2sb(4)); // 2
console.log(power2sb(5)); // false
console.log(power2sb(65536)); // 16
console.log(power2sb(Math.pow(2, 52) + 1)); // false
console.log(power2sb(Math.pow(2, 53) + 1)); // false 实际结果:53