(待研究)50. Pow(x, n)

来源:互联网 发布:程序员鼓励师 编辑:程序博客网 时间:2024/06/05 04:56

50. Pow(x, n)

Implement pow(xn).

leetcode 上的top解法

  1. nest myPow

double myPow(double x, int n) {    if(n<0) 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);}
  1. double myPow

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;}
  1. double x

double myPow(double x, int n) {     if(n==0) return 1;    if(n<0){        n = -n;        x = 1/x;    }    return n%2==0 ? myPow(x*x, n/2) : x*myPow(x*x, n/2);}
  1. iterative one

double myPow(double x, int n) {        double ans = 1;    unsigned long long p;    if (n < 0) {    p = -n;    x = 1 / x;    } else {    p = n;    }while (p) {if (p & 1)ans *= x;x *= x;p >>= 1;// n>>=1 中的>>=意思是先将变量n的各个二进制位顺序右移1位,最高位补二进制0,然后将这个结果再复制给n。}return ans;    }
  1. bit operation



        
        


0 0
原创粉丝点击