代码(数组列表实现):
import java.util.ArrayList;
import java.util.List;
public class tmp {
public static void main(String[] args) {
List<Integer> s = new ArrayList<>();//数组列表方便数组大小变动。
List<Integer> sr = new ArrayList<>();
for (int i = 1; i < 4; i++) {
s.add(i);
}
p(s, sr);
}
public static void p(List<Integer> s,List<Integer> sr){
if(s.size()==1){//递归结束条件
sr.add(s.get(0));
System.out.println(sr.toString());
sr.remove(sr.size()-1);
}else{
for(int i = 0 ; i < s.size(); i++){
sr.add(s.get(i));
List<Integer> tmp = new ArrayList<>();//tmp是整个输入序列,依次从其中剔除元素,形成新的列表
for(Integer it:s)
tmp.add(it);
tmp.remove(i);
p(tmp, sr);//递归
sr.remove(sr.size()-1);//递归结束,把添加进入的序列元素剔除,换for循环中其他元素
}
}
}
}
(linklist实现):
</