题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
示例:
输入:2,3
输出:8.0000
分析:
该题使用递归求解。
需要分情况讨论:0次方,则返回1;1次方,返回该数本身;
偶数次方:递归实现相乘
奇数次方:若大于零,则分两部分递归相乘,再乘以该数本身;
若小于零,则分两部分递归相乘,再乘以该数的倒数;
实现:
/**
* 数的整数次方
* @param base 基数
* @param exponent 幂
* @return
*/
public static double Power(double base, int exponent) {
if(exponent == 0){ //任何数的零次方均为1
return 1;
}
if(exponent == 1){ //任何数的1次方均为该数本身
return base;
}
if(exponent % 2 == 0){ //偶数次方
return Power(base,exponent/2) * Power(base,exponent/2);
}else if(exponent > 1){ //奇数次方,且为正数
return Power(base,exponent/2) * Power(base,exponent/2)*base;
}else{ //奇数次方,且为负数
return Power(base,exponent/2) * Power(base,exponent/2)*1/base;
}
}