#L0329. 波兰表达式
波兰表达式
题目背景
小符同学收到一张神秘的魔法符文纸,上面写着波兰表达式!今天他需要解读这个前缀表达式(运算符在前,操作数在后),用递归魔法计算它的值。你能帮小符同学解开符文密码吗?
题目描述
小符同学看到的符文是:运算符 操作数1 操作数2,例如 + 3 4 表示3+4。符文可能嵌套,例如 * + 2 3 4 表示(2+3)×4。他需要编写递归函数计算表达式值。
递归魔法核心:
小符同学发现符文奥秘:
- 从左往右读,第一个符号必是运算符(+ - * /)
- 运算符后面紧跟着两个子表达式(可能是数字或嵌套表达式)
- 递归计算两个子表达式的值,再应用运算符
魔法终止条件:
- 当读到数字时,直接返回该数字
输入格式
一个字符串 ,表示波兰表达式,满足:
- 仅包含运算符
+ - * /和正整数 - 表达式合法,且每个运算符有两个操作数
- 例如:
+ 1 2、* + 3 4 5、/ * 6 7 14
输出格式
一个整数,表示表达式计算结果(整数除法,向下取整)。
样例
+ 1 2
3
* + 3 4 5
35
样例解释
输入 "+ 1 2"(基础符文):
- 递归拆解:运算符
+→ 子表达式1和2→ 1+2=3
输入 " + 3 4 5"(嵌套符文)*:
- 递归拆解:
- 最外层:
*→ 子表达式+ 3 4和5 - 子表达式
+ 3 4→ 3+4=7 - 最终:7 * 5 = 35
- 最外层: