我无法完全理解从中缀转换为前缀表示法。这是我需要转换的表达式:
(8 * 7)+(2 +(3 * 4))
这是我的转换:
写(+(* 8 7(+(* 3 4)2)))
此转换等于784,这不是正确的答案。
如果有人能向我解释我做错了什么,我会非常感激。
答案 0 :(得分:3)
一步一步地执行:“操作数运算符操作数”变为“运算符操作数操作数”。
(8 * 7) ==> (* 8 7)
(3 * 4) ==> (* 3 4)
(* 8 7) + (2 + (* 3 4)) ==> (* 8 7) + (+ 2 (* 3 4))
(* 8 7) + (+ 2 (* 3 4)) ==> (+ (* 8 7) (+ 2 (* 3 4)))
现在,您可以消除冗余的运算符和组:
(+ (* 8 7) (+ 2 (* 3 4))) ==> (+ (* 8 7) 2 (* 3 4))
答案 1 :(得分:1)
应该是(+(* 8 7)(+(2(* 3 4)))),我认为你的问题是(* 8 7(...
你必须分组(* 8 7)。
答案 2 :(得分:0)
我建议:
write(+(* 8 7)(+(* 3 4)2))