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?
题目要求不能使用循环或者递归,这里需要用到数学的一点小技巧。
首先如果n《=0,那么一定返货false
如果n是3的x次方,那么y=log3(n)一定是一个整数,而且3^y一定等于n
在java里没有底为3的log对数运算,所以这里需要用到换底公式
------------------------------------------------------------------------------------------------------------------------------
public class Solution {
public boolean isPowerOfThree(int n) {
if (n <= 0) {
return false;
}
if (Math.pow(3, Math.round(Math.log(n) / Math.log(3))) == n) {
return true;
}
return false;
}
}