如何提高算法能力?

4

如何更好地实现这个?不重复代码并调用someFunction(1)。

        if(someTrueOrFalse)
        {
                if(OthersomeTrueOrFalse)
                {
                    someFunction(1);
                }
        } 
        else
        {
            someFunction(1);
        }
1个回答

6

假设A为真或假,B为另一个真或假值。

 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);
}

这取决于情况,我想其中哪一个更好看(有时候只是品味问题)。


这与 if (! someTrueOrFalse || OthersomeTrueOrFalse) 相同,更易于理解。 - axiac
@axiac的方法对我来说更容易理解:只有一种情况下函数不应该运行:第三种情况。因此,除了第三种情况之外的每种情况都要运行。而你的方法是这三种情况都成立(1、2和4),然后再描述它们。 - Sharky
@axiac 谢谢,我已将其添加到答案中,尽管我这个答案的意图只是展示如何使用真值表来完成此操作。 - Vincent van der Weele

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接