所以我做了这个检查x是否是y的幂的函数,我想知道是否可以用更简单的方式编写
我已经做了所有可以简化的事情,但是我想知道它是否可以更简单
let IsPowerOf = (x, y) => {
let l = x,
n = 0;
while (l % y == 0) {
l / = y;
n++;
}
if (Math.pow(y, n) == x)
console.log(" true ");
else
console.log("false");
};
如果进行了任何简化,它仍然可以正常工作
答案 0 :(得分:2)
一个很好的简化方法是使用对数。假设您的浏览器支持Number.isInteger()
,则只需执行以下操作:
function isPowerOf(x, y) {
return Number.isInteger(Math.log(x) / Math.log(y));
}
console.log(isPowerOf(16, 2));
答案 1 :(得分:1)
类似这样的东西:
const isPowerOf = (x, y) => {
while (x % y == 0) {
x /= y;
}
return x == 1;
};
console.log(isPowerOf(32, 2)); //Should return true
答案 2 :(得分:0)
const IsPowerOf = (a, b) => {
n = parseInt(Math.log(a) / Math.log(b));
console.log(Math.pow(b, n) == a);
};
IsPowerOf(25,5); // true
IsPowerOf(9,3); // true
IsPowerOf(7,3); // false
答案 3 :(得分:0)
您还可以使用对数并通过检查除以1的余数是否等于0来进行整数检查。
const isPowerOf = (x, y) => (Math.log(x)/Math.log(y)) % 1 === 0;
console.log(isPowerOf(64,8));
console.log(isPowerOf(0.01,0.1));
console.log(isPowerOf(100,11));