Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对嵌套的';对于';循环_Java_For Loop_Recursion - Fatal编程技术网

Java 如何对嵌套的';对于';循环

Java 如何对嵌套的';对于';循环,java,for-loop,recursion,Java,For Loop,Recursion,我对java中的嵌套for循环有一个问题。我的问题是,一开始我不知道我需要多少for循环。它设置在我的程序中间。假设我的程序创建了一个数组。如果数组有3个元素,那么我将创建一个三个for循环,如下所示 for(int i = 0; i<tab[0].length() ; i++){ for(int j = 0; j<tab[1].length() ; j++){ for(int k = 0; k<tab[2].length() ; k++){

我对java中的嵌套for循环有一个问题。我的问题是,一开始我不知道我需要多少for循环。它设置在我的程序中间。假设我的程序创建了一个数组。如果数组有3个元素,那么我将创建一个三个for循环,如下所示

for(int i = 0; i<tab[0].length() ; i++){
    for(int j = 0; j<tab[1].length() ; j++){
        for(int k = 0; k<tab[2].length() ; k++){
            System.out.println(i+" "+j+" "+k);
        }
    }
}

for(int i=0;i这里有一个解决方案。在每次递归调用时,
previousTabs
变长1,
tabs
变短1

public static void iterate(int[] previousValues, int[] tabs) {
    if (tabs.length == 0) {
        System.out.println(Arrays.toString(previousValues));
    }
    else {
        final int[] values = new int[previousValues.length + 1];
        for (int i = 0; i < previousValues.length; i++) {
            values[i] = previousValues[i];
        }
        final int[] nextTabs = new int[tabs.length - 1];
        for (int i = 0; i < nextTabs.length; i++) {
            nextTabs[i] = tabs[i + 1];
        }
        for (int i = 0; i < tabs[0]; i++) {
            values[values.length - 1] = i;
            iterate(values, nextTabs);
        }
    }
}
public static void iterate(int[] tabs) {
    iterate(new int[0], tabs);
}
publicstaticvoiditerate(int[]previousValues,int[]tabs){
如果(tabs.length==0){
System.out.println(Arrays.toString(previousValues));
}
否则{
最终int[]值=新int[previousValues.length+1];
对于(int i=0;i
public static void iterate(int[] previousValues, int[] tabs) {
    if (tabs.length == 0) {
        System.out.println(Arrays.toString(previousValues));
    }
    else {
        final int[] values = new int[previousValues.length + 1];
        for (int i = 0; i < previousValues.length; i++) {
            values[i] = previousValues[i];
        }
        final int[] nextTabs = new int[tabs.length - 1];
        for (int i = 0; i < nextTabs.length; i++) {
            nextTabs[i] = tabs[i + 1];
        }
        for (int i = 0; i < tabs[0]; i++) {
            values[values.length - 1] = i;
            iterate(values, nextTabs);
        }
    }
}
public static void iterate(int[] tabs) {
    iterate(new int[0], tabs);
}