题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
快速幂讲解:https://www.cnblogs.com/CXCXCXC/p/4641812.html
一、代码
快速幂
// 递推写法public class Solution {public static double Power(double base, int exp) {boolean flag = false;if (exp < 0) {flag = true;exp = -exp;}double ans = 1;while (exp > 0) {if ((exp & 1) == 1) {ans = ans * base;}exp >>= 1;base *= base;}return flag ? 1 / ans : ans;}}// 递归写法(没看懂)public class Solution {public static double Power(double base, int exp) {boolean flag = exp < 0;if (flag) {exp = -exp;}double result = getPower(base, exp);return flag ? 1 / result : result;}public static double getPower(double base, int exp) {if (exp == 0) {return 1;}if (exp == 1) {return base;}double ans = getPower(base, exp >> 1);ans *= ans;if ((exp & 1) == 1) {ans *= base;}return ans;}
二、代码
暴力累乘
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;}}
