快速幂 (分治)

int Pow(int a,int b)
{//快速求a^b,复杂度log(b)
    if(b==0)
        return 1;
    if(b&1) //b是奇数
        return a*Pow(a,b-1);
    else
    {
        int t=Pow(a,b/2);
        return t*t;
    }
}
用位运算优化
int Pow(int a,int b)
{//快速求a^b,复杂度log(b)
    int result=1;
    int base=a;
    while(b)
    {
        if(b&1) //b是奇数 
            result*=base;
        base*=base;
        b>>=1;  //相当于b=b/2;
    }
    return result;
}




posted @ 2018-02-06 20:54  詹晔晔(๑>؂<๑)  阅读(137)  评论(0编辑  收藏  举报