Java: For循环在递归函数中的一个元素后停止
Java: For Loop stops after one element in a recursive function
我正在 java 从头开始构建树结构。为了获得我的树的高度,我使用了递归函数。
每个笔记 (IP) 都包含它拥有的所有连接的列表,其中包括 parent。我的想法是遍历所有 children 并在不是 parent.
时再次调用高度函数
我的问题是,它只调用一个 child 而不会遍历所有可能的 children。也许有人可以告诉我我的错在哪里。
如果一个Note有两个children并且每个Note还有另外两个。它在两次迭代中只查看第一个。
public int recursiveGetHight(final Node node, Node parent) {
Node viewPoint = getViewPoint(node);
int h = 0;
for (Node child : viewPoint.getChildren()) {
if (child.getChildren().size() <= 1) {
return 0;
} else if(parent == null || child.getValue() != parent.getValue()){
h = recursiveGetHight(child, viewPoint) + 1;
return h;
}
}
return h;
}
举例:
root
- note 1
- sub note 1
- sub note 2
- x
- y
- note 2
- sub note 1
- z
- sub note 2
int h = recurisvHeight(root, null)
result should be 3 but the function returns 2.
如果我在 for 循环中执行打印命令
System.out.println(child);
它显示:
注1
子注释 1
这是因为你使用了return,当你让return你的函数结束时。
您必须删除第一个 return = 0 并创建一个 ArrayList of child 并通过在列表中追加子项来替换 by 循环中的 return h。
我正在 java 从头开始构建树结构。为了获得我的树的高度,我使用了递归函数。
每个笔记 (IP) 都包含它拥有的所有连接的列表,其中包括 parent。我的想法是遍历所有 children 并在不是 parent.
时再次调用高度函数我的问题是,它只调用一个 child 而不会遍历所有可能的 children。也许有人可以告诉我我的错在哪里。
如果一个Note有两个children并且每个Note还有另外两个。它在两次迭代中只查看第一个。
public int recursiveGetHight(final Node node, Node parent) {
Node viewPoint = getViewPoint(node);
int h = 0;
for (Node child : viewPoint.getChildren()) {
if (child.getChildren().size() <= 1) {
return 0;
} else if(parent == null || child.getValue() != parent.getValue()){
h = recursiveGetHight(child, viewPoint) + 1;
return h;
}
}
return h;
}
举例:
root
- note 1
- sub note 1
- sub note 2
- x
- y
- note 2
- sub note 1
- z
- sub note 2
int h = recurisvHeight(root, null)
result should be 3 but the function returns 2.
如果我在 for 循环中执行打印命令
System.out.println(child);
它显示: 注1 子注释 1
这是因为你使用了return,当你让return你的函数结束时。 您必须删除第一个 return = 0 并创建一个 ArrayList of child 并通过在列表中追加子项来替换 by 循环中的 return h。