在Java中,通过任意数字组创建笛卡尔积的方法可以使用递归实现。以下是一个简单的示例代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CartesianProduct {
public static void main(String[] args) {
List<List<Integer>> input = new ArrayList<>();
input.add(Arrays.asList(1, 2, 3));
input.add(Arrays.asList(4, 5));
input.add(Arrays.asList(6, 7, 8, 9));
List<List<Integer>> cartesianProduct = cartesianProduct(input);
System.out.println(cartesianProduct);
}
public static List<List<Integer>> cartesianProduct(List<List<Integer>> inputLists) {
if (inputLists.size() == 0) {
List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>());
return result;
} else {
List<List<Integer>> smallerCartesianProduct = cartesianProduct(inputLists.subList(1, inputLists.size()));
List<List<Integer>> result = new ArrayList<>();
for (List<Integer> list : smallerCartesianProduct) {
for (Integer item : inputLists.get(0)) {
List<Integer> newList = new ArrayList<>(list);
newList.add(item);
result.add(newList);
}
}
return result;
}
}
}
在这个示例中,我们首先创建了一个名为input
的列表,其中包含了三个子列表,每个子列表包含了一组数字。然后,我们调用了cartesianProduct
方法来计算这些数字的笛卡尔积。
cartesianProduct
方法使用递归来计算笛卡尔积。如果输入列表为空,则返回一个包含一个空列表的列表。否则,我们递归地计算较小的笛卡尔积,并将结果与当前列表中的每个元素组合。最后,我们将组合后的结果添加到新的列表中并返回。
在这个示例中,我们使用了Java的列表来存储数字,但是这个方法也可以应用于其他类型的数据。
领取专属 10元无门槛券
手把手带您无忧上云