动态

详情 返回 返回

力扣之 4 的冪 & 3 的冪 & 2 的冪(遞歸思想) - 动态 详情

題目描述

給定一個整數,寫一個函數來判斷它是否是 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的冪的題目,改一下值即可
user avatar ji_jason 头像 littlelyon 头像 6fafa 头像 crow_5c1708a9c847d 头像 codesheep_pro 头像 lantianhaijiao 头像 zingdev 头像 shiwangdehongshu 头像 haoqidedalianmao 头像 jiang_rong 头像 goustercloud 头像 guisijun 头像
点赞 12 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.