C++

方法:

思路:递归不断分解

  1. class Solution {
  2. public:
  3. double myPow(double x, int n) {
  4. long long N = n;
  5. return n >= 0 ? myPowCore(x, N) : 1.0/myPowCore(x, -N);
  6. }
  7. double myPowCore(double x, long long n) {
  8. if (n == 0) {
  9. return 1.0;
  10. }
  11. double ret = myPowCore(x, n >> 1);
  12. ret *= ret;
  13. //如果是奇数指数
  14. if (n & 1) {
  15. ret *= x;
  16. }
  17. return ret;
  18. }
  19. };