LeetCode -- Power of Three

Question:

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?

 

Analysis:

给出一个整数,写一个函数判断它是否是3的n次幂。

注意:能否不用循环或递归解决这个问题?

 

Solution1: Using Loop.

//Solution1: Loop
public boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         while(n > 1) {
             if(n % 3 != 0)
                 break;
             else 
                 n /= 3;
         }
         return n == 1;
}

 

Solution2: Using Recursion.

//Solution2: Recursion.
public static boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         if(n == 1)
             return true;
         if(n % 3 == 0)
             return isPowerOfThree(n/3);
         else return false;
}

 

Solution3: Using Log Function. (logab = logcb / logca)

    public boolean isPowerOfThree(int n) {
        if(n <= 0)
             return false;
         double log = Math.log10(n) / Math.log10(3);
         if(log - (int)log == 0)
             return true;
         else return false;
    }

 

posted @ 2016-02-13 10:17  江湖小妞  阅读(199)  评论(0编辑  收藏  举报