下面的递归方法如下所示:
private Node getElementRec(Node currentNode, String ... names) {
if (null == names || names.length == 0)
return currentNode;
else {
Node child = currentNode.getChildWithName(names[0]);
return getElementRec(child, namesAux.subList(1, names[1,]));
}
}由于可变长度的Java参数(这里是names)是数组,所以我不能制作类似于names.sublist(1, names.size())的东西,尽管这样做效率很低,所以我尝试将数组转换为列表,然后将其传递给方法,但它不接受列表
所以问题是:在中可以在可变长度参数(Type ... parameter)上进行递归吗?我展示的东西是有可能的吗?
谢谢
发布于 2011-07-07 07:45:58
传递索引
private Node getElementRec(Node currentNode, int i, String ... names) {
if (null == names || names.length == i)
return currentNode;
else {
Node child = currentNode.getChildWithName(names[i]);
return getElementRec(child, i+1, names);
}
}发布于 2011-07-07 07:41:05
可以使用数组类中的copyOfRange函数传递给函数。
Arrays.copyOfRange(names, 1, names.length)避免复制的另一种方法是修改函数以接受开始索引和结束索引:
private Node getElementRec(Node currentNode, int start, int end, String ... names) {
if (null == names || start >= end || start < 0 || end > names.length)
return currentNode;
else {
Node child = currentNode.getChildWithName(names[start]);
return getElementRec(child, start+1, end, names);
}
}发布于 2011-07-07 07:34:36
您可以使用names.size()代替names.length
java中的...是数组,而不是您所建议的向量。
https://stackoverflow.com/questions/6607287
复制相似问题