java - 使用递归时Java编译器错误 'missing return statement'

标签 java recursion compiler-errors return

我正在实现遍历Trie的方法(更具体地说,我正在尝试计算叶节点的数量。进入这些叶节点的边缘都带有终止符“#”)。

我正在使用Java,使用此方法时出现错误:

public int traverse(Node n){

        for(int i=0; i<n.getNumEdges(); i++){
            if(n.getEdgeChar(i) == '#'){
                return 1;
            }
            else{
                return traverse((n.getEdge(i)).getNode());
            }
        }
}

我知道为什么会收到此错误,但是如何解决呢?最初,我认为最好将noLeaves作为参数传递,但是经过一些研究,我发现上述代码被认为是更好的做法。我只是不知道如何解决此编译器错误。任何帮助,将不胜感激!

最佳答案

我在这里有点猜测,但是我认为以下是您的意图?

public int traverse(Node n){
    int numOfLeaves = 0;
    for (int i=0; i<n.getNumEdges(); i++) {
        if(n.getEdgeChar(i) == '#') { // leaf
            numOfLeaves += 1;
        }
        else {
            numOfLeaves += traverse((n.getEdge(i)).getNode());
        }
    }
    return numOfLeaves;
}

这将求和所有边的递归调用的结果并返回总和。假定#指示叶子,并且其总和将计为1,而不是进行递归调用。

关于java - 使用递归时Java编译器错误 'missing return statement',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41587736/

相关文章:

c# - ASP.NET 中的递归 TreeView

c++ - cc1plus : error: unrecognized command line option "-fsysroot=<path>" with g++

c++ - 制作基本的四功能计算器,使用 “error c4700: uninitialized local variable ' answ”

ios - 将自定义Objective-C框架添加到项目时的链接器错误

java - 如何使用java并行流代替executorThreadsPool?

java - 使用 Lucene 和 Java 标记化、删除停用词

java - RMI - 客户端如何获取服务器控制台输出?

Java - Objective C Socket UTF8 问题

javascript 带递归的阶乘

Python内存不足错误,多线程子目录递归