为什么先乘除,后加减?

饭团同学x · August 16, 2017 · 琐记

看书时,读到一段:

许多农村学生考不上大学,并非完全因为自己不努力或者愚钝。除了录取分数线相较大城市要高出许多之外,还有就是农村教学条件相当差。

八十年代曾经流行一个真实的笑话,说的是一位初中生在课堂上问数学老师:“为什么要先乘除,后加减?”那位老师想了一下后回答说:“那是国务院规定的。”

“那是国务院规定的”固然荒谬。但我停下来仔细想了想,好像我最多也只能回答“这是约定俗成的”,并不比“国务院规定”高明多少。运算符的次序确实源于约定俗成的规范,但这并不是问题的终止。这种规范是随意制定的吗?这种优先级有什么好处?

有一种解答[1]是,乘法天然比加法更“高级”,因此把加法写在括号里更方便。我没有学习过抽象代数,因此不会用专业语言描述。但我们都知道乘法分配律,即 a * ( b + c ) = a * b + a * c。这一定律说明,乘法对加法满足分配律,它们之间存在一个层级的关系。如果认为加法优先,则应写作 a * b + c = ( a * b ) + ( a * c )。这么写的话,乘法的性质便不再清晰,不能很好地体现乘法分配律。

还有一种解释[2]是,规定乘法优先于加法可以减少括号的个数。这种解释更直观。

考虑到由加法和乘法组成的式子都可以视作多项式,即:

f(x) = a_0 + a_1 * x + a_2 * x^2 + a_3 * x^3 + ... + a_n * x^n (1)

如果采用加法优先,则需要 n 个括号,即:

f(x) = a_0 + (a_1 * x) + (a_2 * x^2) + (a_3 * x^3) + ... + (a_n * x^n) (2)

显然,第一种表达法更合理。

这篇文章还证明,在秦九韶算法(即计算多项式最快算法)下,乘法优先表示比加法优先表示省一个括号,不再引述。

很遗憾,我找不到最早到底是谁规定了乘法先于加法。但这似乎自然而然地就成了共识。不像一些优先级的设置人为痕迹较重(主要为了方便计算机计算),不那么易于接受。说明“先乘除后加减”的确有背后的原因。

留一道课后题[3]吧:

数学课上,小明问:“老师,不是说好的先算括号里的内容,再算乘除,再算加减吗?为什么 a * ( b + c ) 可以无视括号算成 a * b + a * c 啊?”


[1] Ordering the Operations http://mathforum.org/library/drmath/view/58237.html

[2] Kosheleva, Olga, and Vladik Kreinovich. "Why Multiplication Has Higher Priority than Addition: A Pedagogical Remark." (2016).

[3] Order of Operations vs. Distributive Property http://mathforum.org/library/drmath/view/66676.html

添加新评论 »


© POWERED BY TYPECHO 
THEME SIMPLEONE 1.3 BY TYPECHO CLUB