《剑指offer》----数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路
首先肯定不能用Math.pow(base,exponent)的,会被面试官鄙视的
我们可以用递归的方法来解决
拆分成x的n次方等于(x*x)的n/2次方(n%2==0),和x*(x*x)的n/2次方(n%2==1)。还需要判断n是否为负数
源码
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0){
return 1;
}
if(exponent==1){
return base;
}
double result=Power(base*base,Math.abs(exponent/2));
if(Math.abs(exponent%2)==1){
result*=base;
}
return exponent<0?1/result:result;
}
}