【Leetcode】刷题家之231. Power of Two 326. Power of Three 342. Power of Four

请看题

题目很简单,判断一个传进来的数是否是2 or 3 or 4的幕。

对于这个,有写一个对数的函数的解法也有另外的解法,那么这里我用一个递归的方法。

首先是判断是否为2 的幕。只需要几个if,比如传入的数为负数那么直接可以确认这一定就不是,另外如果取模的结果不是等于0那么肯定也不是,最后再写一个递归结束的条件,也就是传入的数是否为1,这个返回true。在进行递归调用的时候需要传入当前数的一半。

看答案

bool isPowerOfTwo(int n) {
        if(n <= 0 || n % 2 != 0 && n != 1){
            return false;
        }
        if(n == 1){
            return true;
        }
        return isPowerOfTwo(n / 2);
    }

另外两题也是一样的解法,只不过是把2换成了3 或 4

bool isPowerOfThree(int n) {
        if(n <= 0){
            return false;
        }
        if(n == 1){
            return true;
        }
        if(n % 3 != 0){
            return false;
        }
        return isPowerOfThree(n / 3);
    }
bool isPowerOfFour(int n) {
        if(n <= 0){ return false; }
        if( n == 1){
            return true;
        }
        if(n % 4 != 0){ return false;}
        return isPowerOfFour(n / 4);
    }
3 个赞

太强了!屎佬!