java - 通过递归调用继续存储变量值

标签 java recursion

我有下面的 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/

相关文章:

java - 在 java4 和 java5 中使用 volatile 关键字

java - gcm maven依赖错误

java - 由于 InternalResourceViewResolver View 名称错误,Spring MVC 返回 404

java - 递归查找给定长度的平方和的顺序

Java 图形字体 - 如何确保字符位于特定区域?

java - LDAP:使用过滤器避免 Active Directory 中的子 CN

c - 确保具有多个返回值的递归函数 "Preserve"期望的结果

C - 从递归返回后指针值发生变化

java - 为方法编写递归关系

c++ - 查找数组中第一个错误的递归函数