0
点赞
收藏
分享

微信扫一扫

JavaScript四则运算

云上笔记 2021-10-04 阅读 93

    要搞清楚四则运算首先要知道一个称之为"后缀表达式"的玩意儿,它使用一种规则将表达式进行等价转换,并借助栈运算结果

后缀表达式

    示例

       7 + (9-1)  * 3 + 8 / 2   转化的结果为  7 9 1 - 3 * + 8 2 / +

    转化规则

        从左到右遍历,遇到符号,则与栈首元素对比,小则依次释放栈并将当前符号进栈,大则直接输出。当遇到右括号则遍历栈匹配到左括号后出栈

    实现代码

        定义result作为转换结果,定义signs预定义运算符优先级

        
        通过replace删除可能存在的空格;利用substr一次截取一个字符配合while循环遍历字符串;当遇到右括号时,需要向前查找匹配的左括号并依次出栈;对于非右括号,则比对优先级,小则依次出栈并将当前匹配进栈,如匹配到*时就先将栈中的依次出栈,之后将*push进去

        当遍历结束后,如果栈中还有,则依次出栈

        结果如下

        完善

                对于当前来说,如果是十以下的,没有任何问题,可如果是十以上的则无法计算。因此,考虑增加$来标识一个数的开始或者结束

运算

    现在,我们已经得到了后缀表达式,那么就可以运用一定的规则进行运算:遇到数字进栈,遇到符号出栈计算并将计算结果入栈

    假设计算的表达式如下

    转为后缀表达式的结果如下

    代码实现如下

        stack空数组;定义signs预定义运算符优先级;result作为最终运算结果

        使用while循环依次遍历计算

        结果如下

举报

相关推荐

0 条评论