【剑指16】数值的整数次方
2019-06-13 本文已影响0人
浅浅星空
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
分析
本方法思想:如果求10次方用循环做,需要做十次,但是如果我们求5次方的2次方只需要五次即可,9次方=4次方4次方本身,所以这就使得我们想到用递归求解,同时要注意负数和0的问题。
public double Power(double base, int exponent) {
if (base == 0) return 0;
if (exponent == 0) return 1;
double result = 1;
if (exponent > 0) {
for (int i = 1; i <= exponent; i++) {
result *= base;
}
}
if (exponent < 0) {
for (int i = 1; i <= -exponent; i++) {
result *= 1 / base;
}
}
return result;
}
public double Power(double base, int exponent) {
if (base == 0) return 0;
if (exponent == 0) return 1;
if (exponent == 1) return base;
if (exponent > 1) {
double result = Power(base, exponent >> 1);
result = result * result;
if ((exponent & 1) == 1) {
return base * result;
}
return result;
}
if (exponent < 0) {
exponent = -exponent;
double result = Power(base, exponent);
return 1 / result;
}
return -1;
}