Math - 50. Pow(x, n)

    180
    1. Pow(x, n)

    Implement pow(x, n), which calculates x raised to the power n (xn).

    Example 1:

    Input: 2.00000, 10
    Output: 1024.00000
    

    Example 2:

    Input: 2.10000, 3
    Output: 9.26100
    

    Example 3:

    Input: 2.00000, -2
    Output: 0.25000
    Explanation: 2^-2 = 1/22 = 1/4 = 0.25
    

    Note:

    • -100.0 < x < 100.0
    • n is a 32-bit signed integer, within the range [−231, 231 − 1]

    思路:

    题目是让实现幂次计算,做法是把幂次分解,分解到0,然后乘起来,比如5^3 = 5^1 * 5^1 * 5^1 = (5^0 * 5^0 * 5^1) * (5^0 * 5^0 * 5^1)

    代码:

    go:

    func myPow(x float64, n int) float64 {
        if n > 0 {
            return pow(x, n)
        } else {
            return 1.0 / pow(x, n)
        }
    }
    
    func pow(x float64, n int) float64 {
        if n == 0 {
            return 1
        }
        
        y := pow(x, n/2)
        if n % 2 == 0 {
            return y * y
        } else {
            return y * y * x
        }
    }