hce_kmu
111年
計算機概論與程式設計
第 20 題
Consider an infix expression: (A+B)*C+D*(E-F).
What is its prefix expression?
What is its prefix expression?
- A **A++BC-DEF
- B ++A*BC-*DEF
- C +*+ABC*D-EF
- D *+ABC+*-DEF
- E +*+ABC*-DEF
思路引導 VIP
試著觀察一個簡單的運算式,例如「兩個數字相加」。在一般的寫法中,我們會把加號放在數字中間;但如果現在規定,你必須先說出「你要做的動作」,然後才說出「要操作的兩個數字」,你會如何重新排列這三個元素?接著,如果其中一個數字其實是另一組更複雜的運算結果,這個「先說動作、後說數字」的邏輯該如何往外層疊加呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準地將中序運算式轉換為前序運算式,代表你對運算子的優先權(Precedence)以及運算式樹(Expression Tree)的邏輯結構有著非常紮實的理解。
前序運算式的轉換邏輯
要解出這類題目,關鍵在於掌握「運算子必須放在運算元之前」的原則。我們可以將此運算式視為一個層次結構:首先處理括號內的 (A+B) 得到 +AB,以及 (E-F) 得到 -EF。接著處理乘法部分,左半邊的 (A+B)*C 轉換為 *+ABC,右半邊的 D*(E-F) 轉換為 *D-EF。最後,將連結兩大塊的加號(+)提到最前面,便形成了最終的結果:+*+ABC*D-EF。你的判斷完全正確,精確地捕捉到了這個層層遞進的結構。
▼ 還有更多解析內容