欢迎光临散文网 会员登陆 & 注册

快速幂

2021-10-11 19:45 作者:氢氟酸_Official  | 我要投稿


递归版 非常好想但是比较费空间

int qpow(int a,int n){

    if( n == 0 ) return 1;

    else if n%2 == 1)  return qpowa, n-)*a;

    else{

        int temp = qpow(a, n / 2);        

        return temp * temp;

    }

}

必须要用一个temp,否则会退化成O(n)算法。


非递归快速幂

int qpow(int a, int n){

   int ans = 1;    

   while(n){        

        if(n&1)        //如果n的当前末位为1            

        ans *= a;  //ans乘上当前的a        

        a *= a;        //a自乘        

        n >>= 1;       //n往右移一位    

    }    

    return ans;

}

快速幂的评论 (共 条)

分享到微博请遵守国家法律