思路: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.验证