评估后缀表示法

时间:2012-02-19 16:10:40

标签: math stack postfix-notation

我写了一个堆栈类来评估一个后缀表达式。我知道怎么做除了它的顺序。假设我有一个简单的例子:

A B - C +

我唯一的问题是,它是A - B还是B - A?我在网上找不到任何解释这部分评估的资源。

2 个答案:

答案 0 :(得分:2)

您的操作员只是功能。因此,您可以根据需要定义这些功能。

我个人会定义 - 取两个参数,然后从第一个中减去第二个参数。这符合大多数人的期望,以及现有RPN计算器的工作方式。例如,请参阅http://h41111.www4.hp.com/calculators/uk/en/articles/rpn.html了解更多信息。

答案 1 :(得分:0)

简单的ES6实现:

const postfix = input => input.split(' ').reduce((result, token) => 
 isNaN(token)
  ? [ eval(`${result.shift()}${token}${result.shift()}`), ...result ] 
  : [ token, ...result ]
, [])[0];