题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解答:为啥先想到的是递归,真是摆脱不了了
1.递归
public class Q_12 {
public double Power(double base, int exponent) { if(exponent<0){ return 1/(Power1(base,exponent*-1)); }else if(exponent==0){ return 1; }else{ return Power1(base,exponent); } } public double Power1(double base, int exponent) { if (base==0) { return (double) 0; } if(exponent==1){ return base; } if(exponent>1){ return base*Power1(base, exponent-1); } return 0; }
}
2.递推
链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00?answerType=1&f=discussion
public class Solution {
public double Power(double base, int exponent) { if (base == 0.0){ return 0.0; } // 前置结果设为1.0,即当exponent=0 的时候,就是这个结果 double result = 1.0d; // 获取指数的绝对值 int e = exponent > 0 ? exponent : -exponent; // 根据指数大小,循环累乘 for(int i = 1 ; i <= e; i ++){ result *= base; } // 根据指数正负,返回结果 return exponent > 0 ? result : 1 / result;
}
}