java算術(shù)表達(dá)式 疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?
疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?A*b*C→**ABC A*b*C*D→**,右端是堆棧頂部]讀入(,放入堆棧,堆棧中是(,輸出:(空)讀入a,直接輸出,堆棧是(,輸出:a
疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?
A*b*C→**ABC A*b*C*D→**,右端是堆棧頂部]讀入(,放入堆棧,堆棧中是(,輸出:(空)讀入a,直接輸出,堆棧是(,輸出:a,讀入,堆棧是(,輸出:a,讀入B,直接輸出,堆棧是(,輸出:AB,讀入),依次推出堆棧中的符號,直到遇到a([注意括號不是輸出],堆棧為空,輸出:AB,讀入*,堆棧為*,輸出:AB,讀入(,堆棧為*,輸出:AB,堆棧為*)讀?。?,放入堆棧,堆棧為*(,輸出:AB,讀入C,直接輸出,堆棧為*(,輸出:AB,C,讀入-,放入堆棧,堆棧為*(-),輸出:AB,C,讀入D,直接輸出,堆棧為*(-,輸出:AB,CD,讀入)。依次推出堆棧中的符號,直到遇到a([注意括號不輸出]、堆棧為*(,輸出:AB,CD)-讀入*、放入堆棧、堆棧中為*(*)、輸出:AB CD讀入E、直接輸出、堆棧中為*(*)、輸出:AB CD-E讀入,[此時堆棧中*的優(yōu)先級高于堆棧中*的優(yōu)先級,所以*先取出,然后放在堆棧上],堆棧中是*(,輸出:ab CD-E*讀入F,直接輸出,堆棧中是*(,輸出:ab CD-E*F)讀入),依次推出堆棧中的符號,直到遇到一個為止([注意括號沒有輸出],堆棧是*,輸出:abcd-E*F此時,讀入完成,還有一個*在堆棧中,輸出:abcd-e*f*完成!以上是從中綴表達(dá)式到后綴表達(dá)式的全過程,并寫出了棧的變化。
不同的編程語言對程序員的思維塑造有區(qū)別嗎,區(qū)別大不大?
這是一個非常好的問題。作為一個工作多年的程序員,讓我談?wù)勎业目捶ā?/p>
首先,不同編程語言的應(yīng)用對程序員的編程思想有一定的影響。即使是同一類型的編程語言在使用上也會有一定的差異,而這些差異往往會影響程序員的編程思想。
以目前流行的Java和python為例,雖然它們都是全場景編程語言和面向?qū)ο缶幊陶Z言,但Java程序員和python程序員在編程思想上有一定的差異。例如,Java程序員在解決問題時往往更依賴于“框架”和“容器”,而Python程序員則更依賴于各種“庫”,因此Java程序員往往需要有很強的抽象設(shè)計能力,而Python程序員則需要有很強的集成能力。
在分析和設(shè)計問題時,使用不同的編程語言自然會考慮使用哪種解決方案。不同的編程語言也會導(dǎo)致程序員的設(shè)計思想不同。當(dāng)然,除了編程語言之外,工作任務(wù)對程序員的思維方式也有更直接的影響。
例如,研發(fā)級程序員和應(yīng)用級程序員在分析問題時往往有不同的出發(fā)點,不同的出發(fā)點自然有不同的思維方式。例如,在解決問題的過程中,目前從事人工智能平臺研發(fā)的程序員往往更注重算法的設(shè)計以及如何通過算法迭代來提高性能,而使用人工智能平臺進(jìn)行行業(yè)開發(fā)的應(yīng)用級程序員在考慮問題時往往會考慮更多的行業(yè)場景。
最后,在考慮問題時,前端程序員和后端程序員之間存在一些差異。前端程序員更注重用戶體驗,也更注重各種開發(fā)工具對編程效率的影響。