2015-03-03 51 views
4

這是如何更好?沒有重複代碼someFunction(1)。如何改進算法

 if(someTrueOrFalse) 
     { 
       if(OthersomeTrueOrFalse) 
       { 
        someFunction(1); 
       } 
     } 
     else 
     { 
      someFunction(1); 
     } 

回答

6

A = someTrueOrFalse和B = OthersomeTrueOrFalse

A | B | outcome 
----------------- 
0 | 0 | 1 
0 | 1 | 1 
1 | 0 | 0 
1 | 1 | 1 

因此:

if (!(someTrueOrFalse && !OthersomeTrueOrFalse)) { 
    someFunction(1); 
} 

或,等價地,如通過@axiac評論

if (!someTrueOrFalse || OthersomeTrueOrFalse) { 
    someFunction(1); 
} 

它去我認爲(或者有時候這只是一個品味問題)。

+0

這與'if(!someTrueOrFalse || OthersomerrueOrFalse)'相同,這更容易理解。 – axiac 2015-03-03 13:09:11

+0

@axiac答案的方法在我看來更容易理解:Theres只有1個情況函數不能運行:第3個。因此,除了第三種情況,每個案例都要運行。你就像這三個案例是真的,(1,2和4),然後你描述它們。 – Sharky 2015-03-03 13:11:19

+0

@axiac謝謝,補充說,對於答案,儘管我對這個答案的意圖只是爲了說明這是如何用真值表完成的。 – 2015-03-03 13:16:29