高效率幂运算

运行时间由线性O(N)到对数O(logN) 
如果幂为偶数,XN=XN/2 *XN/2, 
如果幂为奇数,XN=X(N-1)/2 *X(N-1)/2 *X,

如:X62求解只用9次乘法 
X3=X2*X, 
X7=(X3)2*X, 
… 
X62=(X31 )2

 

 static long pow(long x, int n) {
        if (n == 0) {
            return 1;
        }
        if (n % 2 == 0) {
            return pow(x * x, n / 2);
        } else {
            return pow(x * x, n / 2) * x;
        }
    }

 

 


 

 

posted @ 2019-06-17 17:40  将军上座  阅读(174)  评论(0编辑  收藏  举报