标题:231 2的幂-简单
题目
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
示例1
输入: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;
}