题目描述
请实现函数 pow(x, n).
分析
- 一个数x的正数n次方,先考虑x和n都是正数情况。
- 如3^7计算,x=3,n=7。当n为奇数的时候,可以拆成 3*3 ^6,即拿出一个3,先乘起来。
- 当n是偶数时,如3^6,可以写成 3 ^(2*3),或者(3 ^2) ^3,即 n除以2,x平方。
- 最后考虑x的正负,对计算没有影响。
- 考虑n的正负,如果为负数,可以先转化成正数情况。
java 代码
public class Solution {
public double pow(double x, int n) {
if(n == 0){return 1;}
if(n < 0){
n *= -1;
x = 1/x;
}
double res = 1;
while(n > 1){
if(n%2 == 1){
//是奇数
res *= x;
n --;
}else{
//是偶数
x *= x;
n = n/2;
}
}
res *= x;
return res;
}
}