トライをトラバースする方法を実装しています(具体的には、リーフノードの数を数えようとしています。 '#')。私は、Javaを使用していますが、この方法を使用するときに、エラーを取得しています再帰を使用するとJavaコンパイラエラー 'missing return statement'が返される
:
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
を渡すのが最善だと思ったが、いくつかの研究をした後、私は上記のコードがより良いプラクティスと見なされることを発見した。私はこのコンパイラエラーを回避する方法を知りません。どんな助けもありがとう!
ループの外側にもデフォルトのreturn文を追加します –
最初のステップで関数から復帰した場合、ループはどのように反復の2番目のステップに進むのですか? –
@PavneetSinghこれはそれを改善するものではありません...コンパイルしてもまだ動作しません。 –