简单的递归反向行动

时间:2017-03-16 20:19:47

标签: java recursion arraylist

所以我正在研究一种方法,该方法应该在向前方向打印列表中的元素,但它们以相反的方向打印。

例如,如果我打算打印的单词是p,e,p,p,e,则出现的是r,e,p,p,e,p(这是胡椒向后)。

这是我的代码

 private void replace(RecursList<E> List, int positionChosen,
     int index){ 

  if(positionChosen >= list.elements.size()+1) return;

  if(index <= this.elements.size()) {

     this.elements.set(positionChosen,  list.elements.get(index)); 
     replace(list,++positionChosen, ++index); 

     return; 
  }
}

当我调用replace()。toString()(我在这里省略了参数)时,它向后打印。我知道这不是我的toString()方法,因为它适用于其他所有内容,因此它必须是我的递归调用的结构。关于可能出错的任何见解?

这是我的字符串方法

private String toStringHelper(ArrayList<T> 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; 
}

1 个答案:

答案 0 :(得分:1)

您的问题出在toStringHelper方法中。后跟String s = toStringHelper(elements, index+1);的行s+=elements.get(index).toString();正在构建答案,追加当前元素背后基于其后的所有内容。

将连接更改为s = elements.get(index).toString() + s;,即前置而不是附加当前元素(和逗号)。