- 题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。(保证base和exponent不同时为0)
- 思路
快速幂
https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00?answerType=1&f=discussion
假设我们求 ,如果我们知道 ,那么 ,所以
但是还有个小问题,如果n是偶数,那么上述没问题。
如果n是奇数, , 比如
- 代码
public class Solution {
public double Power(double base, int exponent) {
//判断exponent为负数的情况
//x的-2次方等价于(1/x)的平方
if(exponent < 0){
base = 1/base;
exponent = - exponent;
}
if(exponent == 0)
return 1.0;
double ret = Power(base, exponent/2);
if(exponent % 2 != 0) //奇数
return ret * ret * base;
else
return ret * ret;
}
}