递归计算队列

时间:2016-10-23 13:24:56

标签: c algorithm data-structures

我在队列中有一些元素(例如/ - 4 2 + 4 5)。

需要计算为(4-2)/(4+5)。有人可以向我解释一下 关于此的递归算法?

1 个答案:

答案 0 :(得分:1)

您尝试理解polish notation,它是逻辑,算术和代数的一种表示形式。

添加数字4和5的表达式以前缀/波兰表示法写成+ 4 5而不是4 + 5

用于减去数字4和2的表达式,以前缀/波兰表示法,写成- 4 2而不是4 - 2

然后,可以组成操作。 op3 (op1 m1 n1) (op2 m2 n2),可以解释为(m1 op1 n1) op3 (m2 op2 n2),其中op1op2op3可以是+-,{ {1}},*

括号是可选的,可以编写以前的波兰表示法 /

理解它的最简单方法是使用树。树还可以帮助您更好地理解用于评估此类表示法的递归算法。在这样的树上,任何操作都将被视为节点,而数字则是叶子。

要评估表达式,需要:

  • 解析表达式:它包括识别运算符和数字并构建关联树。
  • 访问创建的树以评估所有操作并生成最终结果。