请实现函数 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;
}
}
}