题目:
题解:
- 题解1:数学方法+位运算,为4的幂,那么n也为2的幂,n若为2的幂,那么n&(n-1)=0,否则不为2的幂就为1。
- 题解2:迭代法
- 题解3:递归法
代码如下:
class Solution {
public:
//题解1:数学方法
bool isPowerOfFour_1(int n) {
if(n<0||n&(n-1))return false;//n为4的幂,那么n也为2的幂,n若为2的幂,那么n&(n-1)=0,否则不为2的幂就为1
return n%3==1;//直接判断n取余3是否为1即可
}
//题解2:迭代法
bool isPowerOfFour_2(int n){
if(n<1)return false;//4的幂必须为正数
while(n%4==0)n/=4;//直到n%4不为0时跳出,若n为4的幂,那么n为1时跳出;否则n不为4的幂,那么n为一个奇数时跳出,所以我们只需要判断最后n是否等于1即可
return n==1;
}
//题解3:递归法
bool isPowerOfFour(int n){
if(n==0)return false;
if(n==1)return true;
return n>0&&isPowerOfFour(n/4)&&n%4==0;
}
};