3 1 表示式求值(遞迴實現)

2021-08-28 13:34:31 字數 3366 閱讀 5456

表示式可以是只有乙個項組成,或者是多個項加減組成;

項可以由乙個因子組成,或者是多個因子乘除組成;

因子可以由乙個整數或者乙個(表示式)組成。

還有一種方法是通過棧來實現,後面更新~(因為遞迴就是通過棧實現的)

除錯**:

#include#includeusing namespace std;

int term();

int expr();

int factor();

int expr()

{ cout<

(2+3)+(5+7)+9/3

結果:

---expr---

---term---

---factor---

factor_cin.peek(): (

---expr---

---term---

---factor---

factor_cin.peek(): 2

factor_return_result: 2

---factor---end

term_first_result: 2

term_cin.peek(): +

term_return_result: 2

---term---end

expr_first_result: 2

expr_cin.peek(): +

---term---

---factor---

factor_cin.peek(): 3

factor_return_result: 3

---factor---end

term_first_result: 3

term_cin.peek(): )

term_return_result: 3

---term---end

expr_cin.peek(): )

expr_return_result: 5

---expr---end

factor_return_result: 5

---factor---end

term_first_result: 5

term_cin.peek(): +

term_return_result: 5

---term---end

expr_first_result: 5

expr_cin.peek(): +

---term---

---factor---

factor_cin.peek(): (

---expr---

---term---

---factor---

factor_cin.peek(): 5

factor_return_result: 5

---factor---end

term_first_result: 5

term_cin.peek(): +

term_return_result: 5

---term---end

expr_first_result: 5

expr_cin.peek(): +

---term---

---factor---

factor_cin.peek(): 7

factor_return_result: 7

---factor---end

term_first_result: 7

term_cin.peek(): )

term_return_result: 7

---term---end

expr_cin.peek(): )

expr_return_result: 12

---expr---end

factor_return_result: 12

---factor---end

term_first_result: 12

term_cin.peek(): +

term_return_result: 12

---term---end

expr_cin.peek(): +

---term---

---factor---

factor_cin.peek(): 9

factor_return_result: 9

---factor---end

term_first_result: 9

term_cin.peek(): /

---factor---

factor_cin.peek(): 3

factor_return_result: 3

---factor---end

term_cin.peek(): 

term_return_result: 3

---term---end

expr_cin.peek(): 

expr_return_result: 20

---expr---end

表示式求值 (遞迴實現)

dr.kong設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它知道函式min 20,23 的值是20 add 10,98 的值是108等等。經過訓練,dr.kong設計的機械人卡多甚至會計算一種巢狀的更複雜的表示式。假設表示式可以簡單定義為 1.乙個正的十進位制數 x是...

表示式求值(遞迴)

給定乙個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值。輸入僅有一行,為需要你計算的表示式,表示式中只包含數字 加法運算子 和乘法運算子 且沒有括號,所有參與運算的數字均為 0 到 231 1 之間的整數。輸入資料保證這一行只有 0 9 這 12 種字元。輸入樣例 1 1 1 3 4 輸入...

表示式求值(遞迴)

題目 輸入為四則運算表示式,僅由整數 組成,沒有空格,要求求其值。假設運算子結果都是整數。結果也是整數。include include include using namespace std 讀入乙個因子並返回其值 intfactor value 讀入乙個項並返回其值 intterm value 讀...