前缀表达式 + 3 * 2 + 5 12 的值是( )。
这题就是考前缀表达式求值,记住一个核心:前缀式是从右向左扫描,遇到运算符就把它后面两个数(或子结果)算出来。拿到题先别急着从左往右读,直接从最右边的运算符下手,一步步往左合并,最后剩下的那个数就是答案。
最容易栽跟头的就是方向反了,习惯性地从左往右读,把+3当成第一步,结果后面全乱套。另一个坑是运算顺序搞错,前缀式里乘号优先级高,但前缀式本身是从右向左处理的,所以要先算最右边的加法,再算乘法,最后算最左边的加法。还有很多人会把操作数和运算符的位置看反,以为3和2是乘号两边的操作数,其实它们分别是后面两个子表达式的结果。总之,方向反了、顺序乱了、位置看反了,这三个坑踩中任何一个,就算数对了也会选错。
这题考查的是前缀表达式(波兰式)的求值。前缀表达式的规则很直观:运算符写在它两个操作数的前面。比如+ 3 4就是3加4。但计算机怎么算呢?不能像中缀那样从左往右读,因为运算符前面的操作数还没出现。所以求值规则是:从右向左扫描,遇到运算符就把它后面两个数(或子结果)拿出来算,把结果放回,继续往左扫。
命题人爱考这个点,是因为它既考语法理解,又考逆向思维。很多学生看到表达式就习惯从左往右,前缀式恰恰要反着来,这是个天然的“坑”。而且前缀式往往嵌套多层,比如这题就有两层运算,学生容易只算一层就停手,或者算错顺序。