2 的幂

题目不让用递归和循环。

二进制

都提到 2 的幂了,也很快联想到二进制、位运算,不过依然需避开循环。

function isPowerOfTwo(n: number): boolean {
  // 100 & 011 => 0
  // 以此类推
  return n > 0 && (n & n - 1) === 0
}

约数

根本没想到的方法。

function isPowerOfTwo(n: number): boolean {
  const BIG = 1 << 30
  return n > 0 && BIG % n === 0
}