Swift.数值的整数次方

cubegao 2015-07-07 PM 701℃ 0条
题目描述:给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。
import Foundation

class For11Solution {
    func power(_ b: Double,_ e: Int) -> Double {
        
        var base = b
        var exponent = 0
        
        if e > 0 {
            exponent = e
        }else if e < 0 {
            if base == 0 {
                return 0 //分母不能为0
            }
            exponent = -e
        }else {
            return 1
        }
        
        var res : Double = 1
        
        while exponent != 0 {
            if exponent & 1 == 1 {
                res *= base
            }
            base *= base
            exponent = exponent>>1
        }
        
        
        return e > 0 ? res : 1/res
    }
}

算法思想:
/**

  • 1.全面考察指数的正负、底数是否为零等情况。
  • 2.写出指数的二进制表达,例如13表达为二进制1101。
  • 3.举例:10^1101 = 10^000110^010010^1000。
  • 4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
    */

github地址:https://github.com/cubegao/LeetCode

标签: 算法

非特殊说明,本博所有文章均为博主原创。

评论啦~