50. Pow(x, n)
Implement pow(x, n).
Notice
You don't need to care about the precision of your answer, it's acceptable if the expected answer and your answer 's difference is smaller than1e-3
.
Example
Pow(2.1, 3) = 9.261
Pow(0, 1) = 0
Pow(1, 0) = 1
分析:
如果n是偶数,那么, power (x, n) = power(x,n/2) * power(x, n/2)。
如果n是奇数,那么, power (x, n) = power(x,n/2) * power(x, n/2) * x.
注意:当负数转成正数的时候,有可能会溢出。
1 public class Solution { 2 public double myPow(double x, int n) { 3 return helper(x, n); 4 } 5 6 private double helper(double x, long n) { 7 if (n == 0 || x == 1) return 1; 8 if (x == 0) return 0; 9 10 if (n < 0) return 1 / helper(x, -n); 11 12 double result = helper(x, n / 2); 13 if (n % 2 == 0) { 14 return result * result; 15 } 16 return result * result * x; 17 } 18 }