题解 | #数值的整数次方#
数值的整数次方
https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
//两种方法,第一种常规for循环计算;第二种对幂计算进行优化,如果是计算偶次幂,可以底数平方,幂除以二加快运算;如果奇次则可以底数平方,幂除以二,再多乘一个乘数即可。
// class Solution {
// public:
// double Power(double base, int exponent) {
// double re = 1;
// if (exponent == 0) {
// return 1;
// }
// if (exponent < 0) {
// exponent = -exponent;
// for (int i = 0; i < exponent; i++) {
// re = re * base;
// }
// return 1 / re;
// } else {
// for (int i = 0; i < exponent; i++) {
// re = re * base;
// }
// }
// return re;
// }
// };
class Solution {
public:
double Power(double x, int n) {
if ( n == 0) return 1;
if ( x == 0.0) return 0;
long exp = n;
if (n < 0) {
exp = n *
(-1.0);
}
double res = 1.0;
while (exp != 0) {
if ( (exp & 1) == 1 ) { //等同于奇数判断
res *= x;
}
x *= x;
exp >>= 1; //移位代替除法
}
return n < 0 ? 1 / res : res;
}
};


SHEIN希音公司福利 318人发布