Quale delle seguenti postfix notazioni correttamente rappresenta infisso somma 1+2+3+4?
-
27-09-2019 - |
Domanda
Sto testando un infisso-di-postfix-di-infisso converter e trovare un qualche tipo di incertezza.Ad esempio, un semplice infisso somma
1 + 2 + 3 + 4
può essere convertito in uno postfix
1 2 + 3 + 4 +
supponendo che gli operatori con la stessa precedenza non sono cumulabili.Se sono poi ricevo
1 2 3 4 + + +
D'altra parte, tutte le seguenti postfix espressioni possono essere convertiti per la somma iniziale
1 2 + 3 + 4 +
1 2 + 3 4 + +
1 2 3 4 + + +
Sono, queste, postfix espressioni è corretta?
AGGIORNARE 1
Se vuoi fare una tale convertitore, di quale scegliereste?Ho bisogno di scegliere uno per il test.
Soluzione
È necessario definire un vincolo in più.
Matematicamente, le espressioni postfisse sono tutti uguali. Ma su un aggiunta del computer intero in realtà non è commutativa a causa del troppo pieno.
Sostituire 1 2 3 4 con una b c d e considerare la possibilità di troppopieno. La maggior parte dei linguaggi di programmazione definiscono che a + b + c + d
devono essere valutati da sinistra a destra in modo che a b + c + d +
è la traduzione unica corretta.
Solo quando si definisce che l'ordine di valutazione è tutte le versioni 'non specificati' postfix sono equivalenti. Questo è stato il caso per (vecchi) compilatori C.
Altri suggerimenti
Sì, tutti corretti. Essi corrispondono alle seguenti espressioni infisse tra parentesi:
((1 + 2) + 3) + 4
(1 + 2) + (3 + 4)
1 + (2 + (3 + 4))
+
è confuso, è commutativa, quindi, in realtà, ogni risultato sembra corretto.
Prendere in considerazione la sostituzione +
con altri operatori: 1 a 2 b 3 c 4
.
Il risultato corretto qui, per associatività da sinistra a destra operatori, è
1 2 a 3 b 4 c
Quindi, nel tuo caso, mi sarei aspettato 1 2 + 3 + 4 +