波兰法与逆波兰法
2018-03-10 本文已影响8人
c8a73a886522
身为初学者,能力有限,知识尚少,如有纰漏,还望海涵。
对于表达式,通常有三种表示方法,前、中、后缀表示法。我们日常使用的数学算式就是中缀表示法。例:1+5*10-10/2
码文不易,希望支持,谢谢->支持原创
波兰表示法
波兰表示法(Polish notation,或波兰记法),是一种逻辑、算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称做前缀表示法。波兰表示法——维基百科
举个例子
一个算式: $ 1+5*10-10/2 $
用波兰法表示就是: $ - + 1 * 5 , 10 ,/, 10, 2 $
是不是有点反人类,有人就要问了,这玩意看着费劲,为啥要这么写?
答案就是,虽然这玩意人看着费劲,但是更便于机器使用。
规则
那么如何去运算波兰表示法呢?
通过学习,我的总结是
- 在前面的符号后运算,后面的符号先运算。
- 每一步运算都是符号和后面两个数的运算。
- 运算之后把原来的算式替换成结果,继续之后的运算。
又如何把中缀算式转换成波兰表示法呢?
- 把操作数提出来,按照原顺序摆好。
- 根据运算步骤,在两操作数前加符号。如果已经有符号,则后加的在前面。
经过转换之后,不再需要括号。
逆波兰表示法
逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰表示法——维基百科
举个例子
一个算式: $ 1+510-10/2 $
用波兰法表示就是: $ 1 , 5 , 10 +, 10 , 2 ,/- $
是不是有点反人类,有人就要问了,这玩意看着费劲,为啥要这么写?
答案就是,虽然这玩意人看着费劲,但是更便于机器使用。
规则
那么如何去运算逆波兰表示法呢?
通过学习,我的总结是
- 在前面的符号先运算,后面的符号后运算。
- 每一步运算都是符号和前面两个数的运算。
- 运算之后把原来的算式替换成结果,继续之后的运算。
又如何把中缀算式转换成波兰表示法呢?
- 把操作数提出来,按照原顺序摆好。
- 根据运算步骤,在两操作数后加符号。如果已经有符号,则后加的在后面。
经过转换之后,不再需要括号。