Обратная польская запись

Быстрый вопрос об обратной польской нотации.

Why is 2*3/(2-1)+5*(4-1)?: (original)

23*21-/541-*+ 

rather than 23*21-/5+41-*?

Я просто путаю себя. Лично я бы добавил дополнительные скобки к исходному вопросу, чтобы было ясно, где добавляется 5. Если его там нет, в каком порядке я предполагаю, что он идет?

Спасибо


person Emma Rouse    schedule 17.05.2013    source источник


Ответы (2)


Если мы предположим обычный порядок операций, то любые умножения будут вычисляться перед любыми сложениями. Итак, когда у вас есть y + x * z, x * z вычисляется первым в соответствии с обычным порядком операций. Более явно, y+x*z означает (y+(x*z)). Таким образом, 2*3/(2-1)+5*(4-1) означает (((2*3)/(2-1))+(5*(4-1))).

Если бы вы прямо заявили заранее, что вы определили свой порядок операций как сложение, происходящее перед умножением, то, если бы вы написали 4 + 5 * 6, вы имели бы в виду ((4 + 5) * 6). Если бы вы это сделали, то вы могли бы сформулировать распределительный закон как x * y + z = (x * y) + (x * z). Что будут означать выражения, если вы опустите операции? Рассмотрим xy&z, где & является двоичным, а бинарная операция для xy опускается. Если пропущенная бинарная операция равна *, а & равна +, то это будет означать, что выраженная операция & будет выполняться до скрытой операции умножения. Обычно считается, что пропущенные операции выполняются первыми. Таким образом, если бы у сложения был приоритет связывания над умножением, то, вероятно, имело бы смысл, чтобы выражение, подобное xy, означало x+y вместо более обычного x*y. В принципе, кажется, нет ничего плохого в том, чтобы сложения происходили перед умножениями, если вы заявляете, что хотите сделать это заранее, и придерживаетесь этого соглашения и его последствий во всем, что вы пишете. При всем этом, за исключением общения с людьми, которые не понимают RPN или PN, я просто не понимаю, зачем вам писать в инфиксной нотации, когда вы понимаете RPN и PN.

person Doug Spoonwood    schedule 12.06.2013

Это потому, что умножение имеет более высокий приоритет, чем сложение. Когда у вас нет фигурных скобок, 5 (только) сначала умножается на (4-1) и добавляется к остальной части выражения. Если вы не использовали фигурные скобки, он оценивается только в соответствии с порядком приоритета.

person Community    schedule 19.09.2015