首页 > 代码库 > Pow(x, n)
Pow(x, n)
Implement pow( x, n ).
思路:利用位运算来求解:当n为正时,其不同位取1,对应乘上x的不同次幂。从低位往高位,按2倍关系增长。该解法需要注意:当n取INT_MIN时,其负值为原值,需要特殊考虑。貌似此处不需要考虑double溢出的情况。另外,网上还有二分递归调用的解法。
1 class Solution { 2 public: 3 double pow( double x, int n ) { 4 if( n == 0 ) { return 1.0; } 5 if( x == 0.0 ) { return 0.0; } 6 double ret = 1.0; 7 if( n < 0 ) { 8 x = 1.0 / x; 9 if( n == INT_MIN ) {10 ret = x;11 ++n;12 }13 n = -n;14 }15 while( n ) {16 if( n & 1 ) {17 ret *= x;18 }19 x *= x;20 n >>= 1;21 }22 return ret;23 }24 };
Pow(x, n)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。