我有下面的 contains 方法来检查基数 trie 数据结构中是否存在单词。为了找到这个单词,我在这里使用了方法 contains
的递归调用。但是,自从我向上移动变量 available
的值以来,当发现 boolean 变量 available
时,我遇到了将 boolean 变量 available
存储为 true
的问题。 code> 正在更改为 false。
如果available
变量被赋值为true一次,我怎样才能保留它的真实值?
代码:
private boolean contains(TrieNode node, String s) {
boolean available = false;
String communsubString = checkEdgeString(node.getNext(), s);
String restString = s.substring(communsubString.length());
if (node.getNext() != null && !node.getNext().isEmpty()) {
for (TrieNode nextNodeEdge : node.getNext()) {
if (nextNodeEdge.getEdge().equals(communsubString)) {
if (!restString.isEmpty()) {
contains(nextNodeEdge, restString);
} else {
// I want to keep the true value if I was here once.
available = true;
}
}
}
}
return available;
}
最佳答案
一旦你找到了一些东西,你就可以一直返回 true:
private boolean contains(TrieNode node, String s) {
String communsubString = checkEdgeString(node.getNext(), s);
String restString = s.substring(communsubString.length());
if (node.getNext() != null && !node.getNext().isEmpty()) {
for (TrieNode nextNodeEdge : node.getNext()) {
if (nextNodeEdge.getEdge().equals(communsubString)) {
if (!restString.isEmpty()) {
if ( contains(nextNodeEdge, restString) ) {
return true;
}
} else {
return true;
}
}
}
}
return false;
}
关于java - 通过递归调用继续存储变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33867317/