标签:style blog color io div log amp sp on
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 };
标签:style blog color io div log amp sp on
原文地址:http://www.cnblogs.com/moderate-fish/p/3938870.html