Skip to content

Latest commit

 

History

History
37 lines (36 loc) · 624 Bytes

50.md

File metadata and controls

37 lines (36 loc) · 624 Bytes

Pow(x, n)

解法一

分治算法

func myPow(x float64, n int) float64 {
    if n == 0 {
        return 1
    }
    if n < 0 {
        return 1/myPow(x,-n)
    }
    if n %2 != 0 {
        return x * myPow(x,n-1)
    }
    return myPow(x*x,n/2)
}

解法二

位运算

func myPow(x float64, n int) float64 {
    result := 1.0
    if n < 0 {
        n = -n
        x = 1/x
    }
    for n > 0 {
        if n & 1 == 1 { // 假如n是奇数,那么就使用result * x 如果是偶数就是使用的是 x * x 
            result *= x
        }
        x *= x
        n >>= 1
    }
    return result
}