有人可以将此中缀表达式转换为我的前缀吗?

时间:2016-04-07 22:59:47

标签: scheme

我无法完全理解从中缀转换为前缀表示法。这是我需要转换的表达式:

(8 * 7)+(2 +(3 * 4))

这是我的转换:

写(+(* 8 7(+(* 3 4)2)))

此转换等于784,这不是正确的答案。

如果有人能向我解释我做错了什么,我会非常感激。

3 个答案:

答案 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))