分數四則運算式(使用Java)
老師出了這麼一道題目...
當輸入一串分數運算式時,計算出它的答案,並化簡為最簡分數!
例1: input: [(1/2)+(1/3)]+[(4/7)/(5/11)] output: 439/210
例2: input: (3/5)/[(1/2)+(1/3)-[(1/5)*(1/5)]]+[(4/7)/(5/11)]*(7/13) output:11086/7735
由輸入檔可以知道,每個小括號裡面都包著一個分數值,中括號運算的優先權最高,其次是先 * / 後加減,
有人用中序轉後序的方法能夠將運算優先順序問題處理掉,不過我個人比較喜歡用遞迴,
每個主運算式裡面也許會有很多中括號,我將中括號裡面的運算式稱為"子運算式",而"子運算式"的上一層即為它的"父運算式"。
先找出"最子運算式"算完之後將答案 retuen 回"父運算式"中,以此程序將所有子運算式處理完之後,再處理剩下的主運算式即為答案。
附上我的程式,如有錯誤或方法,敬請伺教,感激不盡。