If statement 简化逻辑语句
我有这个:If statement 简化逻辑语句,if-statement,boolean-operations,If Statement,Boolean Operations,我有这个: if(!A or (A and B)) //pseudocode 我想否定if语句: 这应该起作用: if(!(!A or (A and B))) //pseudocode 但我相信有一种方法可以简化它,我现在对此感到困惑。欢迎来到de Morgan的世界,学习布尔代数和简单分布: if(!(!A or (A and B)) => if(!(!A) and !(A and B)) => if(A and (!A or !B)) => if((A and
if(!A or (A and B)) //pseudocode
我想否定if语句:
这应该起作用:
if(!(!A or (A and B))) //pseudocode
但我相信有一种方法可以简化它,我现在对此感到困惑。欢迎来到de Morgan的世界,学习布尔代数和简单分布:
if(!(!A or (A and B))
=> if(!(!A) and !(A and B))
=> if(A and (!A or !B))
=> if((A and !A) or (A and !B))
=> if(A and !B)
如果你把它分解成真值表
A B !A (A and B) A! or (A and B)
0 0 1 0 1
0 1 1 0 1
1 0 0 0 0
1 1 0 1 1
您可以看到结果在所有情况下都是正确的,除了A和!B
无需知道/记住任何布尔代数规则。“除了”只是“不是”所以<代码>!(A和!B)
但是如果写
!A或(A和B)
更符合您试图编写代码的实际问题,除非它对性能至关重要 @suraj这是错误的,因为这简化为如果(A)感谢这似乎与wolfram alpha的输出形成凝胶