Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我们需要前缀、后缀表示法

为什么我们需要前缀、后缀表示法
EN

Stack Overflow用户
提问于 2011-09-26 23:21:39
回答 5查看 36.3K关注 0票数 40

我知道它们是如何相互转换的,但从来没有真正理解过它们的应用是什么。通常的中缀操作非常易读,但是它在哪里失败了,导致了前缀和后缀表示法的产生

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-26 23:26:31

中缀表示法对于人类来说很容易阅读,而前缀/后缀表示法对于机器来说更容易解析。前缀/后缀表示法的最大优点是不会出现像运算符优先级这样的问题。

例如,考虑中缀表达式1 # 2 $ 3。现在,我们不知道这些运算符是什么意思,所以有两个可能的后缀表达式:1 2 # 3 $1 2 3 $ #。如果不知道这些运算符的使用规则,中缀表达式基本上是没有价值的。

或者,用更一般的术语来说:可以从前缀/后缀表达式恢复原始(解析)树,而不需要任何额外的知识,但对于中缀表达式则不是这样。

票数 57
EN

Stack Overflow用户

发布于 2011-09-26 23:44:12

后缀表示法,也称为RPN,从左到右很容易处理。将操作数推入堆栈;运算符将其操作数从堆栈中弹出并推送结果。很少或根本不需要解析。它被Forth和一些计算器使用(HP计算器以使用RPN而闻名)。

前缀表示法几乎也很容易处理;它在Lisp中使用。

票数 5
EN

Stack Overflow用户

发布于 2011-09-26 23:25:47

至少对于前缀表示法的情况:使用前缀操作符的优点是,从语法上讲,它读起来就像是一个函数调用

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7562477

复制
相关文章
Scala基础入门(九)Scala 方法中缀表示法、后缀表示法
Scala 编程规范中,有一些很有意思的规则。合理地使用这些规则,可以帮助我们编写更简洁更有效的代码。
青山师
2023/05/04
4730
为什么我们需要Pulsar?
随着互联网的高速发展,用户规模与业务并发量开始急剧增加,海量的请求需要接收和存储,业务需要中间件来实现削峰填谷;业务也在不断发展,企业内部的系统数量也在不断地增长,不同语言开发出来的系统需要统一的事件驱动;大数据、AI已经成为很多业务中不可或缺的技术,它们都需要统一的数据源。越来越多的场景离不开消息队列,稍具规模的业务,消息队列都是“标配”。
博文视点Broadview
2021/12/06
7200
为什么我们需要Pulsar?
我们为什么需要理论?
把设计当作建房子,理论就是盖房子的方法原理,只用沙石砖瓦,那很难盖好一座房子的,就别提一栋大厦了。如果知道了盖房子的方法,知道用多少材料,那么不仅事半功倍还能节省成本。
宇相
2018/09/18
2.8K0
我们为什么需要理论?
我们为什么需要SDN?
众所周知,相比发展迅速的计算机产业,网络产业的创新十分缓慢。每一个创新都需要等待数年才能完成技术标准化。为了解决这个问题,SDN创始人Nick McKeown教授对计算机产业的创新模式和网络产业的创新模式进行了研究和对比。在分析了计算机产业的创新模式之后,他总结出支撑计算机产业快速创新的如下三个因素。
博文视点Broadview
2020/06/11
9160
我们为什么需要SDN?
为什么我们需要Pod?
在前面的文章中,我详细介绍了在 Kubernetes 里部署一个应用的过程。在这些讲解中,我提到了这样一个知识点:Pod,是 Kubernetes 项目中最小的 API 对
yuanshuai
2022/08/17
4250
为什么我们需要Pod?
我们为什么需要MapReduce?
我们为什么不能使用数据库来对大量磁盘上的大规模数据进行批量分析呢?我们为什么要使用MapReduce? 这些问题的答案来自磁盘的另一个发展趋势: 寻址时间的提高远远慢于传输速率的提高。寻址是将磁头移动到特定磁盘位置进行读写操作的过程。它是导致磁盘操作延迟的主要原因,因而传输速率取决于磁盘的带宽。   如果数据的访问模式中包含大量的磁盘寻址,那么读取大量数据集所化的时间势必会更长(相较于流式数据读取模式),流式读取主要取决于传输速率。另一方面,如果数据库系统只更新一小部分记录,那么传统的B树更有优势。但数据库系统更新大部分数据时,B树的效率比MapReduce低得多,因为需要使用“排序/合并”来重建数据库。   许多情况下,可以将MapReduce视为关系型数据库管理系统的补充。两个系统之间的差异如下表所示。MapReduce比较适合以批处理的方式处理需要分析整个数据集的问题,尤其是即席分析。RDBMS(关系型数据库管理系统)适用于“点查询”和更新,数据集被索引后,数据库系统能够提供低延迟的数据检索和快速的少量数据更新。MapReduce适合一次写入,多次读取数据的应用,而 关系型数据库更适合持续更新的数据集。 关系型数据库和MapReduce的比较
MickyInvQ
2020/09/27
8440
POJ1509 Glass Beads(最小表示法 后缀自动机)
Once upon a time there was a famous actress. As you may expect, she played mostly Antique Comedies most of all. All the people loved her. But she was not interested in the crowds. Her big hobby were beads of any kind. Many bead makers were working for her and they manufactured new necklaces and bracelets every day. One day she called her main Inspector of Bead Makers (IBM) and told him she wanted a very long and special necklace.  The necklace should be made of glass beads of different sizes connected to each other but without any thread running through the beads, so that means the beads can be disconnected at any point. The actress chose the succession of beads she wants to have and the IBM promised to make the necklace. But then he realized a problem. The joint between two neighbouring beads is not very robust so it is possible that the necklace will get torn by its own weight. The situation becomes even worse when the necklace is disjoined. Moreover, the point of disconnection is very important. If there are small beads at the beginning, the possibility of tearing is much higher than if there were large beads. IBM wants to test the robustness of a necklace so he needs a program that will be able to determine the worst possible point of disjoining the beads.  The description of the necklace is a string A = a1a2 ... am specifying sizes of the particular beads, where the last character am is considered to precede character a1 in circular fashion.  The disjoint point i is said to be worse than the disjoint point j if and only if the string aiai+1 ... ana1 ... ai-1 is lexicografically smaller than the string ajaj+1 ... ana1 ... aj-1. String a1a2 ... an is lexicografically smaller than the string b1b2 ... bn if and only if there exists an integer i, i <= n, so that aj=bj, for each j, 1 <= j < i and ai < bi
attack
2018/07/27
2480
我们为什么需要理论?
理论是指人们对自然、社会现象,按照已知的知识或者认知,经由一般化与演绎推理等方法,进行合乎逻辑的推论性总结。
宇相
2018/09/03
8650
我们为什么需要理论?
我们为什么需要CDP?
前面我们已经详细介绍过什么是CDP,不了解的同学可以往前翻一翻:3分钟告诉你什么是CDP系统!
博阳SCRM系统
2022/06/14
6070
我们为什么需要CDP?
树的双亲表示法,孩子表示法以及孩子兄弟表示法
  如下图所示,这是一棵普通的树,该如何存储呢?通常,存储具有普通树结构数据的方法有 3 种:   双亲表示法;   孩子表示法;   孩子兄弟表示法;
嵌入式与Linux那些事
2021/05/20
2.8K0
树的双亲表示法,孩子表示法以及孩子兄弟表示法
为什么我们需要 Hive Metastore!
IT 中的每个人都与数据打交道,包括前端和后端开发人员、分析师、QA 工程师、产品经理以及许多其他角色的人员。使用的数据和数据处理方法因角色而异,但数据本身往往不是关键。
Spark学习技巧
2023/03/21
6820
为什么我们需要 Hive Metastore!
为什么我们需要边缘计算?
08.16.18-Why-do-we-need-edge-computing-1068x656_副本.jpg
用户4122690
2020/04/06
6450
为什么我们需要边缘计算?
前缀、中缀、后缀表达式
转至: 前缀、中缀、后缀表达式 它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀
Christal_R
2017/12/25
1.1K0
为什么我们需要批量操作?
实习的时候被问过一个问题,为什么 redis 会有 pipline,mysql 会有 batch,这些东西都具有批量操作的共性,是什么原因让我们在处理数据时需要批量操作?
出其东门
2020/09/14
9140
为什么我们需要批量操作?
为什么我们需要企业架构?
胜兵先胜而后求战,败兵先战而后求胜 《孙子兵法·形篇》说到 “是故胜兵先胜而后求战,败兵先战而后求胜。”意谓胜利的军队总是先有了胜利的把握才寻求同敌人交战,失败的军队总是先同敌人交战而后企求侥幸取胜。指要充分做好战争准备,等有胜利的把握再打。如同行军打仗一般,企业信息化建设也是如此,如果没有做好未来的规划,那么最多只能得到局部的提升。 我们来看个例子: W公司这几年总共花了3千多万元在IT方面(构建了很多IT系统,比如ERP,订单管理,OA等等),初步感觉好像效果还不错。从表面看来,这样的企业大概可以算作信
ThoughtWorks
2022/08/26
5390
为什么我们需要企业架构?
前缀、中缀、后缀表达式
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。 举例: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 虽然人的大脑很容易理解与分析中缀表达式,但对计算
_gongluck
2018/03/08
1.3K0
如何添加前缀和后缀?
例如:如果是数字100,我们需要变成为"自定义100自定义",那我们需要怎么样处理呢?
逍遥之
2020/03/23
1.8K0
前缀、中缀、后缀表达式
在函数式编程语言中,为了表示方便,出现了一些新的语法格式。所谓前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同,为了说明它们的概念,首先来看一下中缀表达式。 所谓中缀表达式,就是将函数名放到两个操作数中间的表达式,其中,左侧的操作数代表函数对象或值,右侧的操作数代表函数的参数值。例如: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 前缀表达式 前缀表达式又称为前缀记法、波兰式,主要用于表示运算符位于操作数
xiangzhihong
2018/02/08
1.1K0
前缀、中缀、后缀表达式
前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。对计算机来说中缀表达式是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。 举例: (3 + 4) × 5 - 6  中缀表达式 - × + 3 4 5 6  前缀表达式 3 4 + 5 × 6 -  后缀表达式 前缀表达式的求值: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,
yawn
2018/03/14
8560
字典树和前缀树_前缀树和后缀树
常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
全栈程序员站长
2022/10/04
1.4K0
字典树和前缀树_前缀树和后缀树

相似问题

后缀优于前缀表示法的优点

07

评估后缀表示法

20

后缀表示法评价

12

前缀表示法- Java

10

Python中插入表示法的前缀表示法

422
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文