题目概述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
示例:
(1) 输入:n = 27 输出:true (2) 输入:n = 0 输出:false
解题思路:
本题,要求3的幂次方,那么我们可以考虑要求输入的数字为3的幂次方那么只要该数字取余3余数为0,且该数取余3的整数次再取余3一直这样下去,知道最后的除数为1时且余数为0,则该数字为3的幂次方,但是这里需要注意两个特殊的数字1和0,因为1是3的0次幂,那么就要特殊讨论,0不是3的幂次,如果不特殊讨论0,那么一直递归会使得栈溢出。
代码如下所示:
class Solution {
public boolean isPowerOfThree(int n) {
//找出特殊的0和1(3的0次幂)
if (n==0){
return false;
}
if (n==1){
return true;
}
//3的多次幂
if (n%3==0){
//除以3余数为0,那么就获得整数
n = n/3;
if(n==1){
return true;
}else {
return isPowerOfThree(n);
}
}else{
return false;
}
}
}
执行通过截图:



