在Java中实现笛卡尔积的递归方式可以通过一个递归函数来实现。下面是一个简单的例子:
import java.util.ArrayList; import java.util.List; public class CartesianProduct { public static List> cartesianProduct(List
> lists) { List
> result = new ArrayList<>(); cartesianProductHelper(lists, result, 0, new ArrayList<>()); return result; } private static void cartesianProductHelper(List
> lists, List
> result, int index, List
current) { if (index == lists.size()) { result.add(new ArrayList<>(current)); return; } for (int i = 0; i < lists.get(index).size(); i++) { current.add(lists.get(index).get(i)); cartesianProductHelper(lists, result, index + 1, current); current.remove(current.size() - 1); } } public static void main(String[] args) { List > lists = new ArrayList<>(); lists.add(List.of(1, 2)); lists.add(List.of(3, 4)); lists.add(List.of(5, 6)); List
> result = cartesianProduct(lists); for (List
tuple : result) { System.out.println(tuple); } } }
在上面的代码中,cartesianProduct
函数接受一个包含多个列表的列表作为输入,然后调用cartesianProductHelper
函数进行递归计算笛卡尔积。在cartesianProductHelper
函数中,我们首先检查当前索引是否等于列表的大小,如果是则将当前结果添加到最终结果中。否则,我们遍历当前列表中的元素,并递归调用cartesianProductHelper
函数来计算下一个列表的笛卡尔积。