[leetcode]3的幂[javascript]

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)
};

相关链接

2的幂
4的幂

猜你喜欢

转载自blog.csdn.net/u010690493/article/details/86290936