微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何仅通过调用OutofOrder来进一步简化InOrder代码?

如何解决如何仅通过调用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

OutOfOrderp v q(读取:p或q)
其中:

  • pn1 > n2,并且
  • qn2 > n3

~(p v q) = ~p ^ ~q(读取:不是p而不是q)

所以:

  • ~pn1 <= n2(与n1 > n2相反),并且
  • ~qn2 <= n3(与n2 > n3相反)

因此您可以将InOrder重写为

return (n1 <= n2) && (n2 <= n3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。