Java实现 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n

public double myPow(double x, int n) { //核心思想主要还是折半,把原本比较大的这个幂变成原来的一半,这样结果就可以通过这个一半的幂相乘来组成了 if (n == 0) {//任何数的0次幂都是1 return 1; } //把这个问题转换成更小的问题进行解决 double half = myPow(x,n/2); //如果是个偶数的话,就正好是一半幂的乘积 if (n%2 == 0) { return half*half; } //如果是奇数并且n>0的话 if(n > 0) { return half*half*x; } return half*half/x; }

经典的把一个相对较大的问题使用折半的方法转换成较小的问题,代码注释中也写明了解释。
还有另一种相同的思想,只是用循环来实现的,如下:
public double myPow(double x, int n) { double res = 1.0; int i = n; while (i != 0) { //如果是奇数,那么还要多乘一个x if (i%2 != 0) { res *= x; } //偶数直接自我平方 x *= x; //折半 i /= 2; } //判断n的正负来返回正确答案 return n < 0 ? 1/res : res; }

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

    推荐阅读