第5题 写一个函数来判断它是否是 3 的幂次方

给定一个整数,写一个函数来判断它是否是 3 的幂次方

    输入: 27
    输出: true
    输入: 45
    输出: false

题目分析

  • 3 的幂,顾名思义,需要判断当前数字是否可以一直被 3 整除
  • 特殊情况:如果 n === 1,即 3 的 0 次幂的情况,应输出 true
    /**
     * @param {number} n
     * @return {boolean}
     */
    const isPowerOfThree = function (n) {
      if (n < 1) {
        return false;
      }
      while (n > 1) {
        // 如果该数字不能被 3 整除,则直接输出 false
        if (n % 3 !== 0) {
          return false;
        } else {
          n = n / 3;
        }
      }
      return true;
    };

递归求解

  • 思路

或许,我们可以考虑使用递归的方法实现。递归的思路类似于循环,只不过将循环体改为方法的递归调用。

  1. 判断特殊情况 n === 1 时,直接返回 true
  2. 判断特殊情况 n <= 0 时,直接返回 false
  3. 若待定值 n 可以被 3 整除,则开始递归
  4. 若不满足上述条件,则返回 false
    /**
     * @param {number} n
     * @return {boolean}
     */
    const isPowerOfThree = function (n) {
      // n === 1,即 3 的 0 次幂,返回 true
      if (n === 1) {
        return true;
      }
      if (n <= 0) {
        return false;
      }
      if (n % 3 === 0) {
        // 递归调用 isPowerOfThree 方法
        return isPowerOfThree(n / 3);
      }
      return false;
    };
Last Updated:
Contributors: leeguooooo