八哥吃瓜群

吃瓜网是一个坐等吃瓜群众的在线吃瓜网站平台,网站主要分享生活中各种吃瓜事件,用坐等吃瓜的状态认识世界,看一个不一样的世界。

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

波兰表达式:


这里没找到什么好的帖子可以通俗点说,我就用自己的语言解释下首先,我们平时熟悉的 1+1 的运算符(操作符)是在中间的,所以就叫中缀表达式

而波兰表达式的操作符是在前面,1+1 <=> + 1 1,这种被成为前缀表达式

但今天的重点不是他们,是逆波兰表达式  1+1 <=> 1 1 + ,又叫后缀表达式

那这些表达式他们有什么用呢?莫非这样一转程序就能理解了?

给你看个东西  1 + 1 <=> + 1 1 <=> +(1,1)

诺,熟悉不,把它转换为调用函数的方式,问题不就迎刃而解了?

那为什么说今天的重点是后缀表达式呢

因为我没找到中缀表达式的计算过程

因为后缀表达式比中缀表达式更好理解点(自认为)

就好比 1 1 + ,如果你看到这个式子你应该怎么去计算1+1? 把+号前面两个数字,相加对吧~

1 + 2 – 1 <=> 1 2 + 1 –   =》先把+号前面两个数字相加,得到3,原后缀表达式可以转换为    3 1 – ,再把-号前面两个数字相减得到2

(关于逆波兰式的转换一时半会讲不清,感兴趣的可以自己去B站看对应教程)

1 + ( 2 – 1 ) <=> 1 2 1 – +   同上自己算下

1 + 2*1 – 1 <=> 1 2 1 * + – 同上自己算下

这样你就会发现,用了后缀表达式后不管是括号,还是运算顺序之类的之前看似很复杂的问题,迎刃而解

步骤大致就是:

遍历数据:

     遇到 数字:直接输出

     遇到 操作符 :

                    1. 如果 此时栈顶元素的优先级大于操作符,那么将栈中元素全部弹出并输出后,再压入操作符

                     2. 反之直接压入栈中

      遍历完数据后:将栈中元素全部弹出并输出

参考至:后缀表达式_星辰浩宇的博客-CSDN博客

(PS:之前因为我理解错了CSDN中的内容,并没有将栈中元素全部弹出,而是只弹出了栈顶元素,就因为这个BUG我修了三四天!!!)

测试:


(PS:那个**GPT自己都会算错,所以后来我拿计算器自己算了一边,统计结果就是,五个表达式,GPT错两个,我的程序除了最后一个有精度丢失的问题其他全对)

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

发表评论