题目描述
给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。
思路分析
题目要求,int 类型的整数 exponent,那么意味着 exponent 可以是 正整数、负整数、零,三种情况。
1)当 exponent 为正整数时,就要对 base 进行乘积几次,一个 for 循环即可;
2)当 exponent 为负整数时,先对 exponent 取正,接着跟 1)一样,对 base 进行乘积几次;
3)当 exponent 为零时,直接返回 1 即可;
PS:可能有人在想,如果 传入的 double 类型的浮点数 base 为 0.0 时该怎么办,从数学上来说,传入 0 是没有任何意义的, 0 多少次幂都为 0;
image.pngpublic class Solution {
public double Power(double base, int exponent) {
double result = base;
if(exponent > 0){ //当 exponent是正整数
for(int i = 1; i < exponent; i++){
result *= base;
if(result > 1.7976931348623157E308){
System.out.println("已经超出double类型的取值范围。");
return -1;
}
}
return result;
}else if(exponent < 0){ //当 exponent是负整数
exponent = -exponent;
for(int i = 1; i < exponent; i++){
result *= base;
if(result > 1.7976931348623157E308){
System.out.println("已经超出double类型的取值范围。");
return -1;
}
}
return 1/result;
}else{ // 当 exponent 为 0
return 1;
}
}
}
参考文献https://www.nowcoder.com/profile/937880/codeBookDetail?submissionId=1514426
https://www.nowcoder.com/profile/641155/codeBookDetail?submissionId=1504859
网友评论