标签:
double Power(double base, int exponent) { if(exponent < 0) //处理负数,这里最开始没想到 卡了很久 { base = 1 / base; exponent = (-exponent); } double d = base; double ans = 1; int bit = 1; while(exponent != 0) { if((exponent & bit) != 0) //如果exponent的当前位是1 { ans *= d; exponent &= (exponent - 1); } d = d * d; bit = bit << 1; } return ans; }
递归版本
double Power(double base, int exponent) { if(exponent < 0) { base = 1 / base; exponent = (-exponent); } if(exponent == 0) return 1; else { double tmp = Power(base, exponent >> 1); if((exponent & 0x1) == 0) return tmp * tmp; else return tmp * tmp * base; } }
标签:
原文地址:http://www.cnblogs.com/dplearning/p/4674477.html