如何解决如何仅通过调用OutofOrder来进一步简化InOrder代码?
尝试找到一种简化inorder代码的方法时遇到麻烦,因此只对OutofOrder进行了一个单一的调用。我很难找到拨打电话的方法...
public class Inorder {
//Don't change this
public boolean OutOfOrder(int n1,int n2,int n3) {
return (n1 > n2) || (n2 > n3);
}
//The original and messy Inorder,leave this as an example of what not to do
public boolean inorder(int n1,int n3) {
if (n2 > n1) {
if (n3 > n2) {
return true;
} else {
return false;
}
} else if (n2 == n1) {
if (n3 == n1) {
return true;
} else {
return false;
}
} else {
return false;
}
}
//The new and improved Inorder for part 5,call OutOfOrder
public boolean inorder5a(int n1,int n3) {
return true; //replace this
}
}
解决方法
如果要对结果求反,可以这样:
public boolean inOrder(int n1,int n2,int n3) {
return !OutOfOrder(n1,n2,n3);
}
,
除了Cyril的答案外,您可以通过取反InOrder
中的逻辑语句来获得新的OutOfOrder
OutOfOrder
说p v q
(读取:p或q)
其中:
-
p
是n1 > n2
,并且 -
q
是n2 > n3
~(p v q)
= ~p ^ ~q
(读取:不是p而不是q)
所以:
-
~p
是n1 <= n2
(与n1 > n2
相反),并且 -
~q
是n2 <= n3
(与n2 > n3
相反)
因此您可以将InOrder
重写为
return (n1 <= n2) && (n2 <= n3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。