【Swift】Pow函数的实现

题目链接
实现 pow(x, n)函数。即计算 x 的 n 次幂函数。
实现此算法前需要回顾下基本的数学知识。

当n等于0时,无论x为多少,均返回 1。
当n小于0时,则计算 x 的 |n| 次方分之1。
如2的-3次方等于8分之1 (0.125)。
如2的-4次方等于16分之1 (0.0625)。
则初步的边界情况就可以先写起来了

func myPow(_ x: Double, _ n: Int) -> Double {
        var tempx = x
        var tempn = n
        if tempn < 0 {
            tempn = tempn * -1
            tempx = 1 / tempx
        }
        if tempn == 0 {
            return 1.0
        }
    }

接下来可以套用数学交换律
当幂为偶数时
3^4 = 3^2 * 3^2
3^8 = 3^4 * 3^4
当幂为奇数则在偶数的基础上多乘一次自身
3^5 = 3^2 * 3^2 * 3
3^7 = 3^3 * 3^3 * 3
所以需要将幂/2计算后根据奇偶特性来写就行了。
转换成代码后的逻辑就比较好写了

 func myPow(_ x: Double, _ n: Int) -> Double {
        var tempx = x
        var tempn = n
        if tempn < 0 {
            tempn = tempn * -1
            tempx = 1 / tempx
        }
        if tempn == 0 {
            return 1.0
        }
        
        return fastPow(tempx,tempn)
    }
    
    func fastPow(_ x:Double, _ n: Int) -> Double {
        let half = myPow(x, n/2)
        if n%2 == 0 {
            return half * half
        } else {
            return half * half * x
        }
    }

你可能感兴趣的:(【Swift】Pow函数的实现)