递归方法在Java中仅返回null

时间:2014-04-26 10:38:49

标签: java recursion data-structures

我编写了一个递归方法,该方法应返回适合特定路线的树节点。该方法效果很好,但它不返回值,而只返回null。 知道怎么解决吗?这是代码:

private TrieNode<String,V> prefix_last_child(TrieNode<String,V> STN , String prefix) {
    if (prefix.equals("")) {
        return STN;
    }
    char[] preffixx = prefix.toCharArray();
    if (STN.getNexts().get(alphabet_place(preffixx[0])) == null) {
        return null;
    }
    if (!prefix.equals(""))
        prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
    return null;
}

3 个答案:

答案 0 :(得分:3)

您的代码非常接近正常工作。这是问题所在:

if (!prefix.equals(""))
    // You make a recursive invocation, and then...
    prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
// ...ignore its return value, and return null instead!
return null;

替换为

if (!prefix.equals(""))
    return prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
//  ^^^^^^
return null;

解决问题。

答案 1 :(得分:1)

您只能从函数返回null或常量STN。甚至无法返回有意义/非固定值。

答案 2 :(得分:0)

编写递归方法,替换

 if (!prefix.equals(""))
        prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));

与      if(!prefix.equals(&#34;&#34;))           return prefix_last_child(STN.getNexts()。get(alphabet_place(preffixx [0])),prefix.substring(1));