題目:
Implement pow(x, n).
題解:
pow(x,n)就是求x的n次方。x的N次方可以看做:x^n = x^(n/2)*x^(n/2)*x^(n%2)。所以利用遞迴求解,當n==1的時候,x^n=x。
當然n是可以小於0的,2^(-3) = 1/(2^3)。按照上面那個規律就可以解決了。
程式碼如下:
1 public double power(double x, int n) {
2 if (n == 0)
3 return 1;
4
5 double v = power(x, n / 2);
6
7 if (n % 2 == 0) {
8 return v * v;
9 } else {
10 return v * v * x;
11 }
12 }
13
14 public double pow(double x, int n) {
15 if (n < 0) {
16 return 1 / power(x, -n);
17 } else {
18 return power(x, n);
19 }
20 }
2 if (n == 0)
3 return 1;
4
5 double v = power(x, n / 2);
6
7 if (n % 2 == 0) {
8 return v * v;
9 } else {
10 return v * v * x;
11 }
12 }
13
14 public double pow(double x, int n) {
15 if (n < 0) {
16 return 1 / power(x, -n);
17 } else {
18 return power(x, n);
19 }
20 }
Reference: http://fisherlei.blogspot.com/2012/12/leetcode-powx-n.html