题目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/25/math/62/
题目描述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
思路:如果是3的幂 一定能被3除剩下1.就将n除到底。
代码:
class Solution {
public boolean isPowerOfThree(int n) {
if(n==1){
return true;
}else if(n==0){
return false;
}else{
while(n%3==0&&n/3!=0){
n=n/3;
}
if(n==1){
return true;
}else{
return false;
}
}
}
}
//别人的代码:
class Solution {
public boolean isPowerOfThree(int n) {
if(n<1)
return false;
while(n%3==0)
n/=3;
return n==1;
}
}
//另外的方法:递归
class Solution {
public boolean isPowerOfThree(int n) {
double result = Math.log10(n)/Math.log10(3);
return (result==(int)(result))?true:false;
}
}