Leetcode——342.4的冪——題解+代碼實現(遞歸和循環實現)

一、題目


給定一個整數 (32 位有符號整數),請編寫一個函數來判斷它是否是 4 的冪次方。

示例 1:

輸入: 16
輸出: true

示例 2:

輸入: 5
輸出: false

進階:
你能不使用循環或者遞歸來完成本題嗎?


二、題解思路


  •  題解思路1(遞歸):根據給定的整數,先判斷其是否爲0、1,若不是,則進行求餘和除4取整判斷,遞歸操作。
  • 題解思路2(循環):先判斷num是否是0、1,如果不是則進行循環體,定義一箇中間變量每次都自乘4,然後判斷是否和num相等,如果相等則返回true,否則一直判斷,如果當中間變量的值超過了num還沒有輸出true,則輸出flase。

三、代碼實現


  •  C++代碼實現題解思路1:
class Solution {
public:
    bool isPowerOfFour(int num) 
    {
        if(num == 1)                 //當num等於1的時候,其是4的0次冪
            return true;
        else if(num == 0)            //當num等於0的時候,其顯然不是4的冪
            return false;
        else
        {
            if(num%4 == 0 && num/4 != 0)   //num除4求餘爲0,但除4取整還不爲0,故進行取整操作
                num /= 4;
            else if(num%4 == 0 && num/4 == 0)   //num除4求餘爲0,且除4取整爲0,則判斷結束,爲4的冪
                return true;
            else                         
                return false;
        }
        return isPowerOfFour(num);       //遞歸
    }
};
  • C++代碼實現題解思路2
class Solution {
public:
    bool isPowerOfFour(int num) 
    {
        if(num == 0)         //0的情況
            return false;
        if(num == 1)         //1的情況
            return true;
        long long count = 1;  //中間變量
        while(count < num)
        {
            count *= 4;       //自乘4
            if(count == num)
                return true;
        }
        return false;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章