我在队列中有一些元素(例如/ - 4 2 + 4 5
)。
需要计算为(4-2)/(4+5)
。有人可以向我解释一下
关于此的递归算法?
答案 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)
,其中op1
,op2
,op3
可以是+
,-
,{ {1}},*
。
括号是可选的,可以编写以前的波兰表示法
/
理解它的最简单方法是使用树。树还可以帮助您更好地理解用于评估此类表示法的递归算法。在这样的树上,任何操作都将被视为节点,而数字则是叶子。
要评估表达式,需要: