Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example:
Given num = 16, return true. Given num = 5, return false.
Follow up: Could you solve it without loops/recursion?
Credits:
Special thanks to @yukuairoy for adding this problem and creating all test cases.
Java Math的floor,round,ceil函数小结
跟上面的题一样,只不过换成了四。
public class Solution {
private static final double epsilon = 10e-15;
public boolean isPowerOfFour(int num) {
if (num == 0)
return false;
double res = Math.log(num) / Math.log(4);
return Math.abs(res - Math.round(res)) < epsilon;
}
}
另外一种常规方法。
public boolean isPowerOfFour(int n) {
if (n == 0)
return false;
if (n == 1)
return true;
if (n % 4 == 0)
return isPowerOfFour(n / 4);
return false;
}