java 递归 便利集合_Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例...

本文实例讲述了java基于递归和循环两种方式实现未知维度集合的笛卡尔积。分享给大家供大家参考,具体如下:

什么是笛卡尔积?

在数学中,两个集合x和y的笛卡儿积(cartesian product),又称直积,表示为x × y,第一个对象是x的成员而第二个对象是y的所有可能有序对的其中一个成员。

假设集合a={a,b},集合b={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。

如何用程序算法实现笛卡尔积?

如果编程前已知集合的数量,通过程序的多次循环即可得出笛卡尔积。但是如果编程前不知道集合的数量,如何得到笛卡尔积哪?比如集合表示list < list> list;这个list在编程前list的数量是未知的。下面的代码使用递归和循环两种方法实现未知维度集合的笛卡尔积:

import java.util.arraylist;

import java.util.arrays;

import java.util.list;

/**

* 循环和递归两种方式实现未知维度集合的笛卡尔积

* created on 2015-05-22

* @author luweijie

*/

public class descartes {

/**

* 递归实现dimvalue中的笛卡尔积,结果放在result中

* @param dimvalue 原始数据

* @param result 结果数据

* @param layer dimvalue的层数

* @param curlist 每次笛卡尔积的结果

*/

private static void recursive (list> dimvalue, list> result, int layer, list curlist) {

if (layer < dimvalue.size() - 1) {

if (dimvalue.get(layer).size() == 0) {

recursive(dimvalue, result, layer + 1, cu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值