题目描述:
Implement pow(x, n).
思路:
暴力方法时间复杂度为O(n),所以我们要想办法降低复杂度,运用二分的技巧,减少不必要的计算,设法降低递归调用的次数.
代码:
class Solution { public: double myPow(double x, int n) { if(n == 0) return 1; if(n == 1) return x; unsigned absn = abs((long)n); double absResult = 1; if(absn%2 == 1) { double temp = myPow(x,(absn-1)/2); absResult = x*temp*temp; } else { double temp = myPow(x,absn/2); absResult = temp*temp; } if(n > 0) return absResult; else return 1/absResult; } };
原文:https://www.cnblogs.com/zjuhaohaoxuexi/p/11832946.html