剑指 Offer 16. 数值的整数次方
class Solution { public double myPow(double x, int n) { if(x==0) return 0; //快速幂 double ans = 1.0; long n_tmp = n; //如果n为负数 if (n_tmp < 0) { x = 1/x; n_tmp = -n_tmp; } while (n_tmp > 0) { if ((n_tmp&1) == 1) { //如果n为偶数 ans *= x; } x = x*x; n_tmp >>= 1; } return ans; } }
注意这里有一个坑点:
Java代码中int32的变量n∈[-2147483648, 2147483647],因此当n=-2147483648时,执行n = - n会发生越界错误,解决的方法是提前将n保存到long类型的变量中,之后用long类型的变量进行操作。
作者:Ryanjie
出处:http://www.cnblogs.com/ryanjan/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!