function power

来源:互联网 发布:刺客信条2优化怎么样 编辑:程序博客网 时间:2024/06/04 19:41
power (迭代版)int power(int n){    int pow = 1;    while(0 < n--)        pow <<= 1;    return pow;}

复杂度O(2r)(r为输入指数n的比特数)

power(递归)int power(int n){    return (1 > n) ? 1 : power(n - 1);}

复杂度O(2r)

int power(int n){    int pow = 1;    int p = 2;    while(n > 0)    {        if(n & 1)            pow *= p;        n >> 1;        p *= p;    }    return pow;}

复杂度为O(logn)=O(r)

int power(int n){    int pow = 1;    int p = a;    while(n > 0)    {        if(n & 1)            pow *= p;        n >> 1;        p *= p;    }    return pow;}

推广至an

inline int sqr(int a){return a*a};int power(int n){    if(0 == n)return 1;    return (n & 1) ? sqr(power(n >> 1)) << 1: sqr(power(n >> 1));}

复杂度为O(logn)=O(r)

原创粉丝点击