我写了一个堆栈类来评估一个后缀表达式。我知道怎么做除了它的顺序。假设我有一个简单的例子:
A B - C +
我唯一的问题是,它是A - B还是B - A?我在网上找不到任何解释这部分评估的资源。
答案 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];