https://leetcode-cn.com/problems/power-of-three/
描述
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
分析
抱歉我就是用的递归和循环…
依次乘上3的n次幂,判断是否相等
- 循环
var isPowerOfThree = function(n) {
if (n <= 1) {
return n === 1
}
if (n % 2 === 0 || n % 3 !== 0) {
return false
}
let count = 1
while(true) {
let res = Math.pow(3, count)
if (res === n) {
return true
}
if (res > n) {
return false
}
count++
}
return false
};
- 递归
var isPowerOfThree = function(n) {
if (n === 0) return false
if (n === 1) return true
let q = n / 3, r = n % 3
if (q === 1) return true
if (r !== 0) return false
return isPowerOfThree(q)
};