【发布时间】:2021-05-13 22:31:45
【问题描述】:
下面是我的递归函数。我正在尝试在 Java 中学习回溯。在 res 对象中,我添加了列表对象,但是当从函数返回时 res 为空,而当我添加 res 时,我尝试打印列表对象,它显示值。 k 变量大于零。
void help(int arr[],int k,int i,int n,List<Integer> list,List<List<Integer>> res){
if(list.size()==k){
res.add(list);
System.out.println(list);
return;
}
for(int j=i;j<arr.length;j++){
list.add(arr[j]);
help(arr,k,i+1,n,list,res);
list.remove(new Integer(arr[j]));
}
}
【问题讨论】:
-
从 res.add(new ArrayList(list)) 替换 res.add(list) 对我有用。但我仍然不清楚为什么我每次都需要创建新的 arrayList 对象。
标签: java recursion arraylist backtracking