力扣之 4 的冪 & 3 的冪 & 2 的冪(遞迴思想)

水冗水孚發表於2023-02-11

題目描述

給定一個整數,寫一個函式來判斷它是否是 4 的冪次方。如果是,返回 true ;否則,返回 false 。

整數 n 是 4 的冪次方需滿足:存在整數 x 使得 n == 4x

示例 1:

輸入: n = 16
輸出: true

示例 2:

輸入: n = 5
輸出: false

示例 3:

輸入: n = 1
輸出: true
力扣原題目地址 4 的冪:https://leetcode.cn/problems/...

類似題目還有3的冪,2的冪,用遞迴思想解決,一個意思

力扣原題目地址 3 的冪:https://leetcode.cn/problems/...

力扣原題目地址 2 的冪:https://leetcode.cn/problems/...

思路分析

  • 整數n如果是0,肯定不是4的冪了,如果是1,就是40次冪
  • 這樣的話,我們就把整數n不停的除以4,如果除到最後的結果是1,那麼是冪。
  • 如果除的話,得到的數是一個小數,那麼就肯定不是冪了

這裡又延伸出一個問題,就是,js中如何判斷一個數,是不是整數?

沒關係,語言的設計者們,早已經考慮到這種情況了,於是給我們一個api叫做:Number.isInteger(),用於判斷一個數字是不是整數,如下:

Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger(-100000);   // true

Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false

Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger("10");      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

這樣的話,我們們直接拿來使用即可

程式碼附上

var isPowerOfFour = function (n) {
    if (n === 0) { // 0肯定不是,直接返回false
        return false
    }
    else if (n == 1) { // 4的0次方等於1,是返回true
        return true
    } else {
        n = n / 4 // 4的冪、3的冪、2的冪
        if (Number.isInteger(n)) { // 如果是整數,就繼續遞迴
            return isPowerOfFour(n) // return的結果為遞迴執行的結果
        } else { // 如果不是整數,就說明絕對不是4的n次方
            return false
        }
    }
};

提交結果圖

嗯,湊合還行...

3的冪、2的冪的題目,改一下值即可

相關文章