题目
题解
举例算x的4次方可以等于x的2次方乘以x的2次方x^4=x^2*x^2那么x的5次方就是在前面的基础上再乘以x。故如果n次方n是偶数时递归的调用,每次是n=n/2。就是myPow(x * x, n / 2)如果是奇数x * myPow(x * x, n / 2)再乘以x本身就好。如果n<0的时候x=1/x。n=-n由于有溢出代码中n=-(n+1)。
代码
public double myPow(double x, int n) {
if (n == 0)
return 1;
if (n < 0) {
return 1 / x * myPow(1 / x, -(n + 1));
}
return (n % 2 == 0) ? myPow(x * x, n / 2) : x * myPow(x * x, n / 2);
}
备注
本文正在参与「掘金 2021 春招闯关活动」, 点击查看。