326. Power of Three

给定任意随机数,判定是否为3的乘方。

1. 递归

public class Solution {
    public boolean isPowerOfThree(int n) {
        if (n == 1) return true;
        if (n % 3 >0 || n == 0) return false; //n已经除不尽的两种情况
        
        return isPowerOfThree (n / 3);
    }
}

2. 任何一个3的i次方一定能被int型里最大的3的i次方整除,如下所示:

if (n>0) {
    if (1162261467 % n == 0) return true;
    else return false;
}

3. log函数

class Solution {  
public:  
    bool isPowerOfThree(int n) {  
        double res = log10(n) / log10(3);  //有精度问题,不要用log  
        return (res - int(res) == 0) ? true : false;  
    }  
}; 

  

原文地址:https://www.cnblogs.com/Raymond-Yang/p/5166836.html