数值的整数次方(java版)

来源:互联网 发布:sql comment 编辑:程序博客网 时间:2024/06/03 08:13

【题目描述】给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。


【解题思路1】
//1.使用库函数

public class Solution {    public double Power(double base, int exponent) {        return Math.pow(base, exponent);  }}

【解题思路2】
//1. 按照幂的定义。循环累乘。
//2. 注意,若给定的指数为负数,则返回累乘的倒数。
//3. 若给定的指数为零,则返回1。
//4. 底数若为零的情况。

public class Solution {    public double Power(double base, int exponent) {        double result = 1.000;        int ex = Math.abs(exponent);        boolean flag = true;        if(exponent<0){            flag = false;        }        while(ex > 0){            result *= base;            ex--;        }        if(flag == false){            result = 1/result;        }        return result;  }}

【解题思路3】
//1.递归:n为偶数,a^n=a^n/2*a^n/2;n为奇数,a^n=(a^(n-1)/2)*(a^(n-1/2))*a

时间复杂度O(logn) public class Solution {    public double Power(double base, int exponent) {        int n=Math.abs(exponent);        if(n==0)            return 1;        if(n==1)            return base;        double  result=Power(base,n>>1);        result*=result;        if((n&1)==1)            result*=base;         if(exponent<0)            result=1/result;        return result;               }}