[英]writing a java method that returns a boolean from a search
我写了一个方法来搜索一棵树来测试是否有任何整数为负数。
但我正在努力获得正确的布尔值返回。 关于我哪里出错的任何指示?
我想要实现的是,只要满足条件语句,就会返回 false,但不幸的是我的代码总是返回 true
static boolean allE(Tree<Integer> x) {
if (x.isEmpty()) return true;
else {
if (x.getValue()%2 != 0) return false;
}
allE(x.getLeft());
allE(x.getRight());
return true;
}
当您对allE
递归时,您需要考虑该递归的结果。 我看到的最简单的修复,改变
allE(x.getLeft());
allE(x.getRight());
return true;
到
return allE(x.getLeft()) && allE(x.getRight());
虽然,我认为编写算法以便您甚至明确地递归更有意义。 而allE
节省相比,三个字母allEven
(请使用方法和变量有意义的名称)。 就像是,
static boolean allEven(Tree<Integer> node) {
if (node.isEmpty()) {
return true;
} else if (node.getValue() % 2 == 0) {
return allEven(node.getLeft()) && allEven(node.getRight());
}
return false;
}
您没有正确使用递归测试的结果。 它应该是:
if (x.isEmpty()) {
return true;
}
boolean thisNodeEven = x.getValue() % 2 == 0;
return thisNodeEven && allE(x.getLeft()) && allE(x.getRight());
我想您需要评估递归调用的返回值:
static boolean allE(Tree<Integer> x)
{
if (x.isEmpty())
return true;
else {
if (x.getValue()%2 != 0) return false;
}
if(!allE(x.getLeft()) || !allE(x.getRight()))
return false;
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.