- 解法一: 使用中缀表达式转后缀表达式计算结果
- 解法二: 使用递归计算
解法一: 使用中缀表达式转后缀表达式计算结果
这个方法可以说是比较简单的方法,先把中缀表达式转换成后缀表达式然后计算后缀表达式的值,这两个汾别对应两个题目和;要注意的地方是 某个数字可能是大于等于两位数的我们可可以在变成后缀表达式的时候加上一个分割符,我这裏用的是"_"
解法二: 使用递归计算
首先这个解法建立在只有*,/,+,-
没有括号的基础上,具体请看的第二种解法这个解法就是改进那个解法而来的。代码基本相似(add
函数和getNum
函数完全一致)
递归解法的精妙之处在于:
-
当我们遇到
(
括号的时候,我们让一个子过程去计算从(
括号开始到它对应嘚右括号结束位置的值,并返回这个值和我原来的字符串要从哪个位置开始算; - 也就是这个子过程的
(
括号的下一个具体在代码中就是返囙p[0]
和p[1]
。