輸入為四則運算表示式,僅由數字、+、-、*、/、(、)組成,沒有空格,要求求其值。假設運算子結構都是整數,「/」結果也是整數
思路就是遞迴,首先也要寫出表示式的定義
(1)表示式由項和「+」、「-」組成。要麼是單獨乙個項,要麼就是項+項,項-項
(2)項由因子和「/」、「*」組成。要麼是單獨乙個因子,要麼就是因子/因子,因子**因子。
(3)因子就是兩個括號加表示式或整數。
可以看出表示式是個遞迴形式,終止條件為因子為整數時。
#include
#include
#include
using
namespace std;
intfactor_value()
;//因子
intterm_value()
;//項
intexpression_value()
;//表示式
intmain()
intexpression_value()
else more=
false;}
return result;
}int
term_value()
else
break;}
return result;
}int
factor_value()
else
}return result;
}}
遞迴 表示式計算 c
宣告 解法來自 北京大學 郭煒老師的程式設計與演算法 二 演算法基礎 僅作學習筆記 輸入為四則運算表示式,僅由數字 組成,沒有空格,要求求其值。假設運算子結果都是整數。結果也是整數。2 3 5 7 9 3 include include include include using namespace...
表示式計算
棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...
表示式計算
表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...