思路:javascript
對於任意表達式 5*5+5-5/5html
1.先在表達式前加上 0+ 即:java
0+5*5+5-5/5 並不影響表達式計算結果spa
2. 假設表達式能夠 轉換成 left +/- right ,其中的+/- 用sign表示,取值1和-1htm
3. 初始化blog
第一個: 0+5ip
left = 0,get
right = num[0] 第一個操做數,it
sign = +1 (第一個right的符號)io
4. 循環處理:
從第i=0個運算符(*位置)開始判斷,
凡是+/- 的,運算
left = left + sign * right ,right = num[i+1] 下一個待運算數
sign = 更新
凡是*/的,運算 right = right */ num[i+1]
5.收尾
計算:left = left + sign * right
打完收工。
代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="out"> </div> <script type="text/javascript"> function out(msg,addBr) { var out = document.getElementById("out") out.innerHTML = out.innerHTML + msg + (addBr?"<br />":""); } var num = [5, 5, 5, 5, 5] var ops = ["+", "-", "*", "/"] function compute(ans) { var left = 0 var sign = 1; var right = num[0] for(var i = 0; i < 4; i++) { out(num[i] + ops[ans[i]]); if(ans[i]<2){ left = left + right*sign; sign = (ans[i]==1?-1:1); right = num[i+1] }else if(ans[i] ==2) { right = right * num[i+1] }else if(ans[i] ==3) { right = right / num[i+1] } } var result = left + sign*right; out(num[i],false) out("="+result,true) } compute([3,1,0,3]) </script> </body> </html>
方法總結 :
1.明確變量(含循環變量)
2.找出規律
3 添加必要輔助狀態(初始狀態)
4 明確結束狀態
5.驗證