1. 程式人生 > >LeetCode刷題EASY篇Power of Two

LeetCode刷題EASY篇Power of Two

題目

Given an integer, write a function to determine if it is a power of two.

Example 1:

Input: 1
Output: true 
Explanation: 20 = 1

Example 2:

Input: 16
Output: true
Explanation: 24 = 16

Example 3:

Input: 218
Output: false

十分鐘嘗試

遞迴,思路正確,後來基準條件稍微有問題,不知道如何區分,n=1,還是遞迴呼叫的時候中間值的1.比如輸入是3,如果if判斷n==1返回true,那麼3第二次invoke就是1,返回true。這個是不正確的。判斷對n求mod,等於0才遞迴呼叫。這樣可以解決。程式碼如下:

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n==0) return false;
        if(n==1) return true;
        if(n%2==0){
           return isPowerOfTwo(n/2);
        }
        return false;
    }
}