Swift whit Xcode 遞歸枚舉實現(使用枚舉模擬加減乘除複合運算)

//遞歸枚舉值實例
enum Expression{
    //單個數值
    case num(param:Int)
    //表示加法運算 將Expression做爲相關值參數類型
    indirect case add(param:Expression,param2:Expression)
    //表示減法運算 將Expression做爲相關值參數類型
    indirect case sub(param:Expression,param2:Expression)
    //表示乘法運算 將Expression做爲相關值參數類型
    indirect case mul(param:Expression,param2:Expression)
    //表示除法運算 將Expression做爲相關值參數類型
    indirect case div(param:Expression,param2:Expression)
}
//使用遞歸枚舉實現((4+4)*2-8)/2的複合表達式
//建立單值4
var num = Expression.num(param: 4)
//進行4+4運算
var num4Add4 = Expression.add(param: num, param2: num)
var num2 = Expression.num(param: 2)
//進行(4+4)*2
var numMul2 = Expression.mul(param: num4Add4, param2: num2)
var num3 = Expression.num(param: 8)
//進行(4+4)*2-8
var numSub8 = Expression.sub(param: numMul2, param2: num3)
var num4 = Expression.num(param: 2)
//進行((4+4)*2-8)/2
var numDiv = Expression.div(param: numSub8, param2: num4)

//定義功能方法
func expressionFunc(param:Expression)->Int{
    switch param {
    case let .num(param: val):
        return val
    case let .add(param: val1, param2: val2):
        return expressionFunc(param: val1)+expressionFunc(param: val2)
    case let .mul(param: val1, param2: val2):
        return expressionFunc(param: val1)*expressionFunc(param: val2)
    case let .sub(param: val1, param2: val2):
        return expressionFunc(param: val1)-expressionFunc(param: val2)
    case let .div(param: val1, param2: val2):
        return expressionFunc(param: val1)/expressionFunc(param: val2)
    }
}
//方法調用
print(expressionFunc(param: numDiv))
相關文章
相關標籤/搜索