Pow(x,n)
2017-03-07 本文已影响11人
DrunkPian0
x的N次方可以看做:x^n = x(n/2)*x(n/2)*x(n%2)。利用递归求解,当n==1的时候,xn=x。
不要试图顺序理解递归。
public double myPow(double x, int n) {
if (n == 0) return 1;
//half的每个值对应一个return。如果没有return,就会一直卡住。不能正向理解。
double half = myPow(x, n / 2);
if (n % 2 == 0) {
return half * half;
}
if (n % 2 == 1) {
return half * half * x;
} else {
return half * half / x;
}
}