算法-leetcode-每日一题-快速幂

分析:A的n次方,将n看成二进制!例如n为5,二进制101。看下图。所以每一次都要消耗一个二进制位,而且要用一个数字来保存当前二进制位累乘的值。
在这里插入图片描述

public static void questPos(int a, int n) {
    int base = a;//base用来保存当前二进制位的累乘值
    int res = 1;
    while(n != 0) {
        if((n & 1) != 0) {//只有n的当前位为1时,表示要乘上去
            res *= base;
        }//base不停的累乘,表示当前位应该累乘的值
        base *= base;//当前值一定是累乘了2的n方,就跟幂对上了
        n >>= 1;//右移
    }
    System.out.println(res);
}

猜你喜欢

转载自blog.csdn.net/wujingchangye/article/details/88604541