关于leetcode:力扣之-4-的幂-3-的幂-2-的幂递归思想

31次阅读

共计 1130 个字符,预计需要花费 3 分钟才能阅读完成。

题目形容

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

正文完
 0