題目描述
給定一個整數,寫一個函數來判斷它是否是 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,就是4的0次冪。 - 這樣的話,我們就把整數
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的冪的題目,改一下值即可