最后返回的List<List> 中每个list为空(在clean之前)
来源:7-7 递归控制_例题列出所有组合

AllenAlan
2018-10-18
/**
-
递归
-
@Author Allen
-
@Description
-
@Date 2018/10/18 10:42
**/
public class RecursionTest {private static final Logger logger = LoggerFactory.getLogger(RecursionTest.class);
/**
-
@Description: 罗列一个集合 n个元素的组合
-
@param group 组合结果, 原始集合, 组合长度
*/
public void groupCreater(List allGroup, List group, List list, Integer len) {if (len <= 0) {
logger.info(group.toString());
allGroup.add(group);
logger.info(allGroup.toString());
return;
}// 考虑list为空的情况
if (list.isEmpty()) {
return;
}// 假设选取第一个元素
group.add(list.get(0));
groupCreater(allGroup, group, list.subList(1, list.size()), len - 1);// 假设没有选取第一个元素
group.remove(group.size() - 1);
groupCreater(allGroup, group, list.subList(1, list.size()), len);
}
public static void main(String[] args) {
RecursionTest test = new RecursionTest();
List allGroups = new ArrayList(); -
// logger.info("-----------------");
// test.groupCreater(allGroups,new ArrayList(), new ArrayList(), 0);
// logger.info(JSON.toJSONString(allGroups));
// allGroups.clear();
//
logger.info("-----------------");
test.groupCreater(allGroups, new ArrayList(), Arrays.asList(1, 2, 3, 4), 2);
logger.info(allGroups.toString());
// logger.info("-----------------");
// test.groupCreater(allGroups, new ArrayList(), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 5);
// logger.info(JSON.toJSONString(allGroups));
// allGroups.clear();
}
}
1回答
-
这是很常见的错误结果,也很容易通过单步调试的方法检查出来。我们可以试试一步一步跟踪来看问题。
012018-10-29
相似问题