版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/87457269
题目:实现 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/2指数函数的相乘,奇数为两个n/2指数函数相乘在乘以x;这样大大提高了效率,因此用递归进行处理;
代码实现:
class Solution {
public double myPow(double x, int n) {
if(n < 0)
return 1.0 / power(x, -n);
else
return power(x, n);
}
public double power(double x, int n) {
if(n == 0)
return 1;
double v = power(x, n / 2);
if(n % 2 == 0) {
return v * v;
} else {
return v * v * x;
}
}
}