请实现函数 pow(x, n).
public class Solution {
public double pow (double x, double n) {
// write code here
long num = (long) n;
if (num < 0) {
x = 1/ x;
num = -num;
}
double res = 1;
while (num != 0) {
if ((num & 1) != 0)
res *= x;
x = x * x;
num = num >> 1;
}
return res;
}
} import java.util.*;
public class Solution {
public double pow(double x, double n) {
boolean bigZero = n > 0;
int mi = Math.abs((int)n);
double res = myPowHelper(x, mi);
if (bigZero) {
return res;
}
return 1 / res;
}
// 递归版本
public double myPowHelper(double x, int n) {
if (n == 0) {
return 1;
}
double res = 1;
if ((n & 1) == 0) {
double temp = myPowHelper(x, n / 2);
res = temp * temp;
} else {
double temp = myPowHelper(x, n / 2);
res = temp * temp * x;
}
return res;
}
// 迭代版本
public double myPowHelperTwo(double x, int n) {
if(n == 0) {
return 1;
}
double res = 1;
if((n & 1) == 0) {
for(int i = 0; i < n / 2; i++) {
res *= x;
}
res *= res;
} else{
for(int i = 0; i < n / 2; i++) {
res *= x;
}
res = res * res * x;
}
return res;
}
} public double pow (double x, double n) {
// write code here
double res = power(x, Math.abs((int)n));
return n > 0 ? res : 1.0/res;
}
public double power(double x, int n){
if(n == 0){
return 1;
}
if(n % 2.0 == 0){
return power(x * x, n/2);
}else {
return power(x * x, n / 2) * x;
}
} public class Solution {
public double pow(double x, int n) {
if(n < 0)
return 1/pow(x, -(n + 1)) * (1 / x);
double res = 1;
while(n >= 1) {
if((n & 1) == 1)
res *= x;
x *= x;
n >>= 1;
}
return res;
}
}
public class Solution{
public double pow(double x, int n){
if(n<0){
return 1/power(x,-n);
}else if(n>0){
return power(x,n);
}else{
return 1;
}
}
public double power(double x, int n){
if(n == 0) return -1;
double half = power(x,n/2);
if(n % 2 == 0){
return half * half;
}else{
return x * half * half;
}
}
}