找回密码
 立即注册
首页 资源区 代码 Swift whit Xcode 递归枚举实现(使用枚举模拟加减乘除 ...

Swift whit Xcode 递归枚举实现(使用枚举模拟加减乘除复合运算)

支季雅 5 天前
  1. //递归枚举值实例
  2. enum Expression{
  3.     //单个数值
  4.     case num(param:Int)
  5.     //表示加法运算 将Expression作为相关值参数类型
  6.     indirect case add(param:Expression,param2:Expression)
  7.     //表示减法运算 将Expression作为相关值参数类型
  8.     indirect case sub(param:Expression,param2:Expression)
  9.     //表示乘法运算 将Expression作为相关值参数类型
  10.     indirect case mul(param:Expression,param2:Expression)
  11.     //表示除法运算 将Expression作为相关值参数类型
  12.     indirect case div(param:Expression,param2:Expression)
  13. }
  14. //使用递归枚举实现((4+4)*2-8)/2的复合表达式
  15. //创建单值4
  16. var num = Expression.num(param: 4)
  17. //进行4+4运算
  18. var num4Add4 = Expression.add(param: num, param2: num)
  19. var num2 = Expression.num(param: 2)
  20. //进行(4+4)*2
  21. var numMul2 = Expression.mul(param: num4Add4, param2: num2)
  22. var num3 = Expression.num(param: 8)
  23. //进行(4+4)*2-8
  24. var numSub8 = Expression.sub(param: numMul2, param2: num3)
  25. var num4 = Expression.num(param: 2)
  26. //进行((4+4)*2-8)/2
  27. var numDiv = Expression.div(param: numSub8, param2: num4)
  28. //定义功能方法
  29. func expressionFunc(param:Expression)->Int{
  30.     switch param {
  31.     case let .num(param: val):
  32.         return val
  33.     case let .add(param: val1, param2: val2):
  34.         return expressionFunc(param: val1)+expressionFunc(param: val2)
  35.     case let .mul(param: val1, param2: val2):
  36.         return expressionFunc(param: val1)*expressionFunc(param: val2)
  37.     case let .sub(param: val1, param2: val2):
  38.         return expressionFunc(param: val1)-expressionFunc(param: val2)
  39.     case let .div(param: val1, param2: val2):
  40.         return expressionFunc(param: val1)/expressionFunc(param: val2)
  41.     }
  42. }
  43. //方法调用
  44. print(expressionFunc(param: numDiv))
复制代码
  

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册