Solution:
二分法, 用递归来解比较容易理解,把x的n次方划分成两个x的n/2次方相乘,然后递归求解子问题,结束条件是n为0返回1。因为是对n进行二分,算法复杂度是O(logn)。
public class Solution { public double pow(double x, int n) { if(n == 0) //terminate condition return 1.0; double half = pow(x, n/2); if(n%2 == 0) return half * half; else if(n > 0) return half * half * x; else return half * half / x; } }
No comments:
Post a Comment