天天看點

面試題11. 數值的整數次方

題目描述

給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。

思路:

核心是一個循環,進行不斷累乘。

public class Solution
    public double Power(double base, int exponent) {
        double result = 1.0;
        int exponent_abs = Math.abs(exponent);
        if(equal(base, 0.0) && exponent < 0) { // 0的負數幂
            return 0.0;
        }
        if(equal(exponent, 0.0)) {
            return 1;
        }else {
            for(int i = 0; i < exponent_abs; i++) {
                result *= base;
            }
        }
        return exponent > 0 ? result : 1 / result;
    }
    // 在計算機中,判斷兩個double型是否相等
    // 隻能判斷它們的絕對值隻差是否在一個很小的範圍内
    public boolean equal(double n1, double n2) {
        return (n1 - n2 > -0.0000001) && (n1 - n2 < 0.0000001);      
    }
}