n === 1
,即 3 的 0 次幂的情况,应输出 true
n
,循环除以 3,看是否能被 3 整除。n
小于 1 则直接返回 false
n
是否可以被 3 整除false
,若可以则将该数字除以 3,直至循环结束true
while
循环耗时 n === 1
时,直接返回 true
n <= 0
时,直接返回 false
n
可以被 3 整除,则开始递归false
2147483647
,转换成 16 进制为 0x7fffffff
。Math.log(x) / Math.log(y)
方法可以求出以 y
为底,x
的对数,即 y
的多少次幂的值是 x
,我们称之为 maxPow
。由于该值不能被整除,此处 maxPow
只需取整数部分。最后,我们可以利用 Math.pow
求出 3 的幂的极大值 maxValue
,并检查该值是否能整除待确定的输入值。n <= 0
时,直接返回 false
maxPow
maxPow
次幂值maxPow
次幂值是否能整除待定值 n
Math.pow
的时间复杂度为