Java 获取多维表的所有索引

Java 获取多维表的所有索引,java,arrays,recursion,java-7,dimensions,Java,Arrays,Recursion,Java 7,Dimensions,我很难创建一个(递归)函数来打印多维表的所有可能索引。 我以数组的形式获得了有关多维度的信息。 示例: int[]{6,6}将是一个包含6x6=36个字段的二维表,因此结果将是[0,0]、[0,1]、[1,1]、[1,2]、[2,2]…等等。 另一个例子: int[]{2,2,2}将是一个包含8个可能索引的三维表:[0,0,0]、[0,0,1]、[0,1,1]…等等 我正试图在Java7中实现这一点 编辑:根据要求,我到目前为止得到了什么。代码正在生成绑定外异常 loop(new int[2],

我很难创建一个(递归)函数来打印多维表的所有可能索引。
我以数组的形式获得了有关多维度的信息。
示例:
int[]{6,6}
将是一个包含6x6=36个字段的二维表,因此结果将是
[0,0]、[0,1]、[1,1]、[1,2]、[2,2]…
等等。
另一个例子:
int[]{2,2,2}
将是一个包含8个可能索引的三维表:
[0,0,0]、[0,0,1]、[0,1,1]…
等等
我正试图在Java7中实现这一点

编辑:根据要求,我到目前为止得到了什么。代码正在生成绑定外异常

loop(new int[2], new int[]{6, 6}, 0);

  private void loop(int[] index, int[] dimensionSizes, int dimensionIndex) {
        if (index[dimensionIndex] < dimensionSizes[dimensionIndex] && dimensionIndex < dimensionSizes.length) {
            System.out.println(Arrays.toString(index));
            index[dimensionIndex] = index[dimensionIndex] + 1;
            if (index[dimensionIndex] < dimensionSizes[dimensionIndex]) {
                loop(index, dimensionSizes, dimensionIndex);
            } else {
                loop(index, dimensionSizes, dimensionIndex + 1);
            }
        }
    }
循环(新的int[2],新的int[]{6,6},0);
私有void循环(int[]索引,int[]维度大小,int维度索引){
if(索引[dimensionIndex]
我认为这段代码可以回答您的问题:

public static void printAllIndex(int[] dimensions) {
    int[] index = new int[dimensions.length];
    int stepNumber = 0;

    // Initialization
    for (int i : index) { index[i] = 0; }         // init index to 0
    for (int d : dimensions) { stepNumber += d; } // count number of iteration needed
    System.out.println(Arrays.toString(index));   // print first index [0,0,...]

    for(int s = 0; s <= stepNumber - 1; s++) {
        boolean allEquals = true;
        int value = index[index.length - 1];
        for (int i = index.length - 1; i >= 0; i--) {
            if(index[i] != value) {
                index[i]++;
                allEquals = false;
                break;
            }
        }
        if (allEquals) { index[index.length - 1]++; }
        System.out.println(Arrays.toString(index));
    }
}
public静态void printalIndex(int[]维度){
int[]索引=新的int[dimensions.length];
int stepNumber=0;
//初始化
对于(inti:index){index[i]=0;}//init index to 0
对于(int d:dimensions){stepNumber+=d;}//计算所需的迭代次数
System.out.println(Arrays.toString(index));//打印第一个索引[0,0,…]
对于(int s=0;s=0;i--){
if(索引[i]!=值){
索引[i]++;
allEquals=假;
打破
}
}
if(allEquals){index[index.length-1]++;}
System.out.println(Arrays.toString(index));
}
}

到目前为止,您尝试了什么?谢谢,这正是我需要的。