反向波兰表示法双分割错误

时间:2013-08-11 21:37:12

标签: math postfix-notation

我编写了这个相对普通的算法,它解析给定的输入,然后将其从中缀转换为后缀。

我正在处理事件顺序的问题。我可能误解了关于后缀操作的一些事情......

假设我想计算10 /(2-4)/ 5:答案应该是-1,但是,我得到的答案是-25。

10,2,4, - ,5,/,/

为什么呢?因为我的'后缀'会先行-2/5然后再划分10 / - .4,这显然是错误的:

我有什么简单的东西吗?

1 个答案:

答案 0 :(得分:1)

你的表达式在同一级别有两个除法运算(没有括号)。假设除法从左到右关联,则表达式应解释为

(10 / (2 - 4)) / 5

然后应该在后缀表示法中变为以下内容:

10 2 4 - / 5 /

您最终得到的后缀将对应于排序:

10 / ((2 - 4) / 5)

从解析树生成反向波兰语应该清除问题,假设从中缀表达式正确生成了解析树。