【发布时间】:2017-05-26 01:24:21
【问题描述】:
我正在实现一种遍历 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 作为参数传递,但在做了一些研究后,我发现上面的代码被认为是更好的做法。我只是不知道如何解决这个编译器错误。任何帮助将不胜感激!
【问题讨论】:
-
在循环外也添加一个默认的返回语句
-
如果你从第一步的函数返回,你的循环应该如何进入迭代的第二步?
-
@PavneetSingh 这不会让它变得更好......正在编译但仍然无法正常工作。
-
在
for() {...}循环之外添加一个return -1;。 -
它不会计算叶子,你只有一个递归终止,它总是返回“1”。我认为您忘记了在循环中求和。
标签: java recursion compiler-errors return