java-递归而不是多循环
作者:互联网
我希望此方法适用于任意给定数量的参数,我可以通过代码生成(具有很多难看的代码)来做到这一点,可以通过递归来完成吗?如果是这样怎么办?我了解递归,但我不知道该怎么写.
private static void allCombinations(List<String>... lists) {
if (lists.length == 3) {
for (String s3 : lists[0]) {
for (String s1 : lists[1]) {
for (String s2 : lists[2]) {
System.out.println(s1 + "-" + s2 + "-" + s3);
}
}
}
}
if (lists.length == 2) {
for (String s3 : lists[0]) {
for (String s1 : lists[1]) {
System.out.println(s1 + "-" + s3);
}
}
}
}
解决方法:
这是一个简单的递归实现:
private static void allCombinations(List<String>... lists) {
allCombinations(lists, 0, "");
}
private static void allCombinations(List<String>[] lists, int index, String pre) {
for (String s : lists[index]) {
if (index < lists.length - 1) {
allCombinations(lists, index + 1, pre + s + "-");
}else{
System.out.println(pre + s);
}
}
}
标签:loops,combinatorics,java,recursion 来源: https://codeday.me/bug/20191024/1922005.html