题目形容
给定一个整数,写一个函数来判断它是否是 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 的幂的题目,改一下值即可