亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在編程中 !(~A && ~B) 比 (A||B) 好嗎?

在編程中 !(~A && ~B) 比 (A||B) 好嗎?

茅侃侃 2023-05-10 17:09:52
我正在開發Java,我正在使用它IntelliJ作為我的 IDE。我寫了一個if聲明如下。if( list1.size() >= 1 || list2.contains(itemX) ) {    //do something}IntelliJ建議轉換 ( DeMorgan's Law) 并將其轉換為:if( ! ( list1.size() < 1 && !( list2.contains(itemX) ) ) ) {    //do something}所以它應用了一種非常普遍的離散數學理論來簡化布爾表達式。我想知道的是這如何優化任何東西?||如果第一部分本身為真,運算符無論如何不會執行整個條件,并且僅當第一部分為假時才執行 RHS。轉化后的條件是否有效?如何?
查看完整描述

2 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

這有點主觀,但一個好的一般經驗法則是盡可能多地消除復雜性。所謂復雜性,是指您需要執行多少操作才能獲得所需的結果。

從這個意義上說,!a && !b這比!(a || b)因為在一種情況下你否定 a 和 b,然后執行 OR 和運算符導致 3 個操作,而在后一種情況下,你只執行 2 個操作。當然這是空洞的,當你'我們談論的是兩種情況,但是當你處理很多情況時,這會產生很大的不同。

但是在您的場景中,您的 IDE 更改它沒有任何意義,因為后者的操作數量較少??赡苁?IDE 試圖拼命吸引你 :)

希望這是有道理的!


查看完整回答
反對 回復 2023-05-10
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

兩者都是完全相同的陳述。

我同意如果第一部分為真,則 OR 運算符不會評估第二部分,但是,如果第一部分為假,AND 運算符也不會評估第二部分。

事實上,與 A||B 相比,評估 ~(~A && ~B) 將花費更多的時間和空間。

希望這可以幫助 :)


查看完整回答
反對 回復 2023-05-10
  • 2 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號