Swift-整数的减法,乘法和除法

题目:实现整数的减法,乘法和除法,只允许使用加法.

减法

减法是加法的另外一种形式,减法通过取反可以变成加法.

` func negate(a:Int) -> Int {

    var num:Int = a
    var result:Int = 0
    
    let base:Int = num < 0 ? 1 : -1
    
    while num != 0 {
        result += base
        num += base
    }
    
    return result
}

func minus(a:Int,b:Int) -> Int {
    return a + negate(a: b)
}`

乘法

乘法是加法的另外的一种形式,数字重复相加的结果就是乘法.

` func multiply(a:Int,b:Int) -> Int {

    if a < b {
        return multiply(a:b,b:a)
    }
    
    var sum:Int = 0
    
    for _ in  0.. Int {
    if a < 0 {
        return negate(a:a)
    } else {
        return a
    }
}`

除法

通过加法来实现除法是没法做到保留到小数位,只能保留到整数.

` func divide(a:Int,b:Int) -> Int? {

    if b == 0 {
        return nil
    }
    
    let numA:Int = abs(a: a)
    let numB:Int = abs(a: b)
    
    var result:Int = 0
    var num:Int = 0
    
    while (numB + num) < numA {
        num += numB
        result += 1
    }
    
    if (a > 0 && b > 0) || (a < 0 && b < 0) {
        return result
    } else {
        return negate(a: result)
    }
    
}`

测试代码:

`var operatorNum:Operator = Operator()
var minusNUm:Int = operatorNum.minus(a: 20, b: 10)
print("FlyElephant---减法结果:(minusNUm)")

var multiNum:Int = operatorNum.multiply(a: 10, b: -4)
print("FlyElephant---乘法结果:(multiNum)")

var divideNum:Int? = operatorNum.divide(a: 10, b: -3)
print("FlyElephant---除法结果:(divideNum!)")`

FlyElephant.png

你可能感兴趣的:(Swift-整数的减法,乘法和除法)