题意:
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
即判断该整数是否是3的n次方数
难点:不使用任何循环或递归解决此题!
首先,先给出使用循环和递归的解法,非常简单:
1、循环法:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0) return false;
if(n == 1) return true;
while(n % 3 == 0) {
n /= 3;
if(n == 1) return true;
}
return false;
}
};
2、递归法:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0) return false;
if(n == 1) return true;
else if (n % 3 == 0)
return isPowerOfThree(n / 3);
return false;
}
};
3、利用换底公式得出的一行代码AC方法:
换底公式:
public class Solution {
public boolean isPowerOfThree(int n) {
return (Math.log10(n) / Math.log10(3)) % 1 == 0;
}
}