给出一个简单的算术表达式,即,
3+2*5-6
当使用python作为语言计算时
>>>3+2*5-6
7
就像我们在学校里被教导的那样,在给定的表达中
。
我想知道,即使没有指定括号,计算机如何处理这个表达式?
发布于 2022-01-17 17:36:05
备注:首先,在阅读答案之前,确保有Stackoverflow的轻量级主题,以便清晰地看到图像。
解析树
解析树是一种树数据结构,它可以用来表示真实世界的结构,如句子或数学表达式。
将句子表示为树结构允许我们使用子树来处理句子的各个部分。
我们还可以表示数学表达式,这是python如何设法保持运算符优先级(BODMAS)的答案,我们知道乘法比加或减都有更高的优先级。由于有括号,我们知道在进行乘法之前,必须计算括号大小的加法和减法表达式。树的层次结构帮助我们理解整个表达式的计算顺序。在计算顶层乘法之前,我们必须计算子树中的加减。加法,即左子树,计算为10。减法,即右子树,计算为3。使用树的层次结构,一旦计算了子树中的表达式,就可以简单地用一个节点替换整个子树。
如果您想了解更多关于实现部分以及如何编写解析树的信息,可以查看本文(http://www.openbookproject.net/books/pythonds/Trees/ParseTree.html)。
https://stackoverflow.com/questions/70745215
复制相似问题