#L0329. 波兰表达式

波兰表达式

题目背景

小符同学收到一张神秘的魔法符文纸,上面写着波兰表达式!今天他需要解读这个前缀表达式(运算符在前,操作数在后),用递归魔法计算它的值。你能帮小符同学解开符文密码吗?

题目描述

小符同学看到的符文是:运算符 操作数1 操作数2,例如 + 3 4 表示3+4。符文可能嵌套,例如 * + 2 3 4 表示(2+3)×4。他需要编写递归函数计算表达式值。

递归魔法核心:
小符同学发现符文奥秘:

  • 从左往右读,第一个符号必是运算符(+ - * /)
  • 运算符后面紧跟着两个子表达式(可能是数字或嵌套表达式)
  • 递归计算两个子表达式的值,再应用运算符

魔法终止条件:

  • 当读到数字时,直接返回该数字

输入格式

一个字符串 SS,表示波兰表达式,满足:

  • 仅包含运算符 + - * / 和正整数
  • 表达式合法,且每个运算符有两个操作数
  • 例如:+ 1 2* + 3 4 5/ * 6 7 14

输出格式

一个整数,表示表达式计算结果(整数除法,向下取整)。

样例

+ 1 2
3
* + 3 4 5
35

样例解释

输入 "+ 1 2"(基础符文)

  • 递归拆解:运算符+ → 子表达式12 → 1+2=3

输入 " + 3 4 5"(嵌套符文)*:

  • 递归拆解:
    • 最外层:* → 子表达式+ 3 45
    • 子表达式+ 3 4 → 3+4=7
    • 最终:7 * 5 = 35