50.Pow(x,n)

求x的冪次方Implement pow(x, n).

二分法

  1. 注意-n 轉化爲n的時候溢出,需要處理一下
class Solution {//超時用不了
public:
double myPow(double x, int n) { 
    if(n==0) return 1;
    double t = myPow(x,n/2);
    if(n%2) return n<0 ? 1/x*t*t : x*t*t;
    else return t*t;
}
    double myPow1(double x, int n) {
        if (n < 0) {
        //  n = -n;
        //  x = 1 / x;
        return (1 / x)*myPow(1 / x, -(n + 1));
        }
            //return (1 / x)*myPow(1 / x, -(n + 1));
        if (n == 0)
            return 1;
        if (n == 2)
            return x*x;
        if (n % 2 == 0) 
            return myPow(myPow(x, n / 2), 2);
        else
            return x*myPow(myPow(x, n / 2), 2);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章