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

2017-05-29  本文已影响1380人  FlyElephant

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

减法

减法是加法的另外一种形式,减法通过取反可以变成加法.
<pre><code>` 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)
}`</code></pre>

乘法

乘法是加法的另外的一种形式,数字重复相加的结果就是乘法.
<pre><code>` func multiply(a:Int,b:Int) -> Int {

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

func abs(a:Int) -> Int {
    if a < 0 {
        return negate(a:a)
    } else {
        return a
    }
}`</code></pre>

除法

通过加法来实现除法是没法做到保留到小数位,只能保留到整数.
<pre><code>` 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)
    }
    
}`</code></pre>

测试代码:
<pre><code>`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!)")`</code></pre>

FlyElephant.png
上一篇下一篇

猜你喜欢

热点阅读