力扣之 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,就是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的幂的题目,改一下值即可
转载自:https://segmentfault.com/a/1190000043386051