toString方法ArrayList简单递归
toString Method ArrayList simple recursion
我正在尝试递归打印列表的内容,这就是我应该得到的
[6, 8] but I am getting [8, 8 6, 6]
但是打印顺序错误,而且还在自我复制。
我对递归还是很陌生,所以如果这听起来像是一个基本问题,我深表歉意。这是我的方法:
private String toStringHelper (ArrayList<E> elements, int index, String ret){
if(index>=elements.size())return ret;
if (ret != null){ret += elements.get(index).toString() + ", ";}
ret += elements.get(index).toString() + " ";
return toStringHelper(elements, ++index, ret);
}
我如何在结构上对其进行修复,使其按照我想要的方式输出?我的递归是否以相反的顺序打印它?
你错过了我认为的其他:
if (ret == null) {
ret = elements.get(index).toString() + ", ";
} else {
ret += elements.get(index).toString() + " ";
}
你实际上想避免使用那个ret
参数;这只会使事情复杂化。为什么不选择类似的东西:
private String toStringHelper (ArrayList<E> elements, int index) {
if(index>=elements.size()) {
return "";
}
String trailingElements = toStringHelper(elements, ++index);
if (trailingElements.isEmpty()) {
return elements.get(index).toString();
else {
return elements.get(index).toString() + ", " + trailingElements;
}
}
例如。
并且仅作记录:当然可以在这里使用递归;但这是应该使用简单的 for-each 循环的示例之一;因为它更容易阅读;并以直接的方式完成工作。在这种情况下,递归方法给你没有但额外复杂性。
private String toStringHelper(ArrayList<E> elements, int index) {
if (index >= elements.size())
return "";
String s = toStringHelper(elements, index + 1);
if (index < elements.size() - 1)
s += ", ";
s += elements.get(index).toString();
return s;
}
希望它的工作!
我正在尝试递归打印列表的内容,这就是我应该得到的
[6, 8] but I am getting [8, 8 6, 6]
但是打印顺序错误,而且还在自我复制。
我对递归还是很陌生,所以如果这听起来像是一个基本问题,我深表歉意。这是我的方法:
private String toStringHelper (ArrayList<E> elements, int index, String ret){
if(index>=elements.size())return ret;
if (ret != null){ret += elements.get(index).toString() + ", ";}
ret += elements.get(index).toString() + " ";
return toStringHelper(elements, ++index, ret);
}
我如何在结构上对其进行修复,使其按照我想要的方式输出?我的递归是否以相反的顺序打印它?
你错过了我认为的其他:
if (ret == null) {
ret = elements.get(index).toString() + ", ";
} else {
ret += elements.get(index).toString() + " ";
}
你实际上想避免使用那个ret
参数;这只会使事情复杂化。为什么不选择类似的东西:
private String toStringHelper (ArrayList<E> elements, int index) {
if(index>=elements.size()) {
return "";
}
String trailingElements = toStringHelper(elements, ++index);
if (trailingElements.isEmpty()) {
return elements.get(index).toString();
else {
return elements.get(index).toString() + ", " + trailingElements;
}
}
例如。
并且仅作记录:当然可以在这里使用递归;但这是应该使用简单的 for-each 循环的示例之一;因为它更容易阅读;并以直接的方式完成工作。在这种情况下,递归方法给你没有但额外复杂性。
private String toStringHelper(ArrayList<E> elements, int index) {
if (index >= elements.size())
return "";
String s = toStringHelper(elements, index + 1);
if (index < elements.size() - 1)
s += ", ";
s += elements.get(index).toString();
return s;
}
希望它的工作!