我写了一个堆栈类来评估后缀表达式。我知道如何做,除了它的顺序。假设我有一个简单的,例如:
A B - C +
我唯一的问题是,是 A - B 还是 B - A?我在网上找不到任何解释这部分评估的资源。
我写了一个堆栈类来评估后缀表达式。我知道如何做,除了它的顺序。假设我有一个简单的,例如:
A B - C +
我唯一的问题是,是 A - B 还是 B - A?我在网上找不到任何解释这部分评估的资源。
您的运算符只是函数。因此,您可以根据需要定义这些功能。
我个人会定义 - 取两个参数,然后从第一个中减去第二个。这符合大多数人的期望,也符合现有 RPN 计算器的工作方式。例如,请参阅http://h41111.www4.hp.com/calculators/uk/en/articles/rpn.html了解更多信息。
简单的 ES6 实现:
const postfix = input => input.split(' ').reduce((result, token) =>
isNaN(token)
? [ eval(`${result.shift()}${token}${result.shift()}`), ...result ]
: [ token, ...result ]
, [])[0];