这个题目我也没有思路,同学们可以查看这个http://www.cnblogs.com/NickyYe/p/4442867.html
下面是我改进后的代码
第一种方法:
class Solution { public: double myPow(double x, int n) { if (0 == n)return 1; double half = myPow(x, n / 2); if (!(n % 2)) return half*half; else if (n>0) { return half*half*x; } else { return half*half*(1 / x); } } };
第二种方法:
if (0 == n)return 1; double result = 1.0; bool tag = false; double num=1.0; if(n==-2147483648) { n=1+n; num=x; } if (n<0) { n = -n; tag = true; } while (n) { if (n & 1) { result *= x; } x = x*x; n = n >> 1; } if (tag) { if(0.999999<num&&num<1.000001) return 1 / result; else return 1/result*num; } if(0.999999<num&&num<1.000001) return result; else return result*num; } };
时间: 2024-11-29 03:37:07