2017-10-22 35 views
0

ツリー内の子の数を返す単純な再帰関数に問題があります。foreachを無視するすべての子の最初の子にしか入りません関数が既に何かを返すためでしょう。 私は何をすべきかわかりません。Java foreachの再帰的な戻り値(ツリー内の子の数)

public static int numberOfChildren(Node<Integer> a) { 
    if(!a.isLeaf()) { 
     for(Node<Integer> f : a.getChildren()) { 
      return 1 + numberOfChildren(f); 
     } 
    } 
    return 0; 
} 

答えて

1
int nbr = 1; 
for (Node<Integer> f: a.getChildren()) { 
nbr += numberOfChildren(f); 
} 
return nbr; 
+0

ありがとう、私は右、foreachの中の関数の再帰呼び出しを返すことはできませんか? – sleiphir

+0

これは可能ですが、ループの実行が停止します。時にはそれが欲しいかもしれません。この場合、各子ノードの再帰呼び出しの合計を返す必要があります。したがって、結果を集約して合計を返します。 – Flocke

関連する問題