我已经编写了一个PHP解析器,它根据来自earlier question的反馈将等式的字符串表示形式转换为RPN。在对它进行测试时,我发现了两个不同的方程,它们解析了RPN中的同一个东西。因为当你解决它们时,它们会在RPN中成为同样的东西,你会得到同样的答案。解析到RPN两个方程给出了相同的表示法,但有不同的答案
- 3 + 4 * 8 /(1 -5)
- 3 + 4 * 8/1-5
两个最终成为348 * 15 -/+解决时给出了一个这答案-5这是正确的第一个,但第二个答案应该是30.
所以我误解了如何转换为RPN?解析器的代码可以在前面问题的上面链接中找到。
是的,你的解析器坏了。为了帮助你调试:第二个RPN的正确表示是:348 * 1/+ 5-。 – Heinzi 2009-11-27 12:44:22
您是否以正确的方式设置了操作员的优先顺序? – erenon 2009-11-27 12:47:32