Java:递归循环的组合,内部有不同的FOR循环;输出:FOR 循环索引

标签 java recursion counter nested-loops

目前递归对我来说是新鲜且困难的话题,但是我需要在我的算法之一中使用它。

这是挑战:

我需要一个方法来指定递归次数(嵌套 FOR 循环的数量)和每个 FOR 循环的迭代次数。结果应该告诉我,类似于计数器的东西,但是计数器的每一列都限制为特定的数字。

ArrayList<Integer> specs= new ArrayList<Integer>();
  specs.add(5); //for(int i=0 to 5; i++)
  specs.add(7);
  specs.add(9);
  specs.add(2);
  specs.add(8);
  specs.add(9); 

public void recursion(ArrayList<Integer> specs){
  //number of nested loops will be equal to: specs.size();
  //each item in specs, specifies the For loop max count e.g:
  //First outside loop will be: for(int i=0; i< specs.get(0); i++)
  //Second loop inside will be: for(int i=0; i< specs.get(1); i++)
  //...
}

结果将类似于本手册的输出,嵌套循环:

    int[] i;
    i = new int[7];

    for( i[6]=0; i[6]<5; i[6]++){
        for( i[5]=0; i[5]<7; i[5]++){
            for(i[4] =0; i[4]<9; i[4]++){
                for(i[3] =0; i[3]<2; i[3]++){
                    for(i[2] =0; i[2]<8; i[2]++){
                        for(i[1] =0; i[1]<9; i[1]++){
                            //...
                            System.out.println(i[1]+" "+i[2]+" "+i[3]+" "+i[4]+" "+i[5]+" "+i[6]);
                        }
                    }
                }
            }
        }
    }

我已经为此花了 3 天时间,但仍然没有结果,正在互联网上搜索它,但是例子太不同了。因此,我人生中第一次在互联网上发布编程问题。提前谢谢您,您可以随意更改代码效率,我只需要相同的结果。

最佳答案

// ...
   recursion (specs, specs.size () - 1);    

// ...

   public void recursion(ArrayList<Integer> specs, int startWith){

      for (int i = 0; i < specs.get(startWith); i++) {
         // ...
         if (startWith - 1 >= 0)
            recursion (specs, startWith - 1);
      }
    }

关于Java:递归循环的组合,内部有不同的FOR循环;输出:FOR 循环索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869468/

相关文章:

java - 递归方法给我错误

java - 阿达玛模式问题

Python单词计数器对单词是否被引号括起来敏感?

Java计数器不计数

java - Spring REST security - 以不同方式保护不同的 URL

java - 如何在jmeter中使用.csv文件的单元格值?

java - Android 无法使用 attrs 值扩充布局文件

c - GCC 的递归和 `static` 关键字

database - VB.Net - 每次在数据库中创建新行时计数+1

java - 使用 testng 运行可运行 jar 的 FileNotFoundException