示例1给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
输入:n = 1 输出:true 解释:2^0 = 1示例2
输入:n = 16 输出:true 解释:2^4 = 16示例3
输入:n = 3 输出:false示例4
输入:n = 4 输出:true示例5
输入:n = 5 输出:true提示
进阶
- -231 <= n <= 231 - 1
代码Java**进阶:**你能够不使用循环/递归解决此问题吗?
// 递归实现
public boolean isPowerOfTwo(int n) {
if (n == 2 || n == 1)
return true;
if (n % 2 != 0 || n <= 0)
return false;
return isPowerOfTwo(n / 2);
}
// 循环实现
public boolean isPowerOfTwo1(int n) {
if (n == 2 || n == 1)
return true;
if (n % 2 != 0 || n <= 0)
return false;
while (n > 1) {
if (n % 2 != 0)
return false;
n /= 2;
}
return true;
}
// 非循环非递归实现
public boolean isPowerOfTwo2(int n) {
if (n == 1)
return true;
if (n % 2 != 0)
return false;
if (((n - 1) & n) == 0)
return true;
else
return false;
}



