原文:50. Pow(x, n)(力扣 面试题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-050/

题目:

难度:Middle

相关话题:数学二分查找

实现pow(x , n ) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例2:

输入: 2.10000, 3
输出: 9.26100

示例3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

说明:

  • -100.0 <x < 100.0

  • n 是 32 位有符号整数,其数值范围是[−231,231− 1] 。


思路:

先处理特殊情况n===0n===1n===-1

然后对n分别是偶数和奇数进行处理,最终目标就是让n为偶数,然后pow(x,n)===pow(x*x,n/2)

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容
 * @param {number} x
 * @param {number} n
 * @return {number}
 */
var myPow = function(x, n) {
  // console.log(x,n)
  if(n===0)return 1
  if(n===1)return x
  if(n===-1)return 1/x
  if(n % 2===0){
    return myPow(x*x,n/2)
  }else{
    return x*myPow(x*x,(n-1)/2)
  }
};