java 不定次数的循环嵌套问题
现在需要根据特定的情况循环特定的次数,如果是2,就进行两层的循环嵌套,如果是3,就是三层的循环嵌套,如此……我想应该用递归,但是我从来没做过循环里面递归循环的,不知代码该怎么写。
请高手帮忙写下示例代码
比如说通过参数来确定循环嵌套的层次,参数2就要达到代码
for (int i = 0; i < size; i++)
{
//一些代码
for (int j = 0; j < size; j++)
{
//一些代码
}
}
这样的类似效果。
如果是参数3,就要达到
for (int i = 0; i < size; i++)
{
//一些代码
for (int j = 0; j < size; j++)
{
//一些代码
for (int x = 0; x <size; x++)
{
//一些代码
}
}
}
类似的效果
如此下去……
import java.util.Arrays;
public class Loop {
public static void each(Callback callback, int times) {
int[] indexes = new int[times];
Arrays.fill(indexes, -1);
each0(callback, times, 0, indexes);
}
private static void each0(Callback callback, int times, int nextTimes,
int[] indexes) {
if (nextTimes >= times)
return;
for (int i = 0; i < times; i++) {
indexes[nextTimes] = i;
for (int k = indexes.length; --k >哪此 nextTimes;) {
indexes[k] = -1;
}
callback.call(indexes, nextTimes);
each0(callback, times, nextTimes + 1, indexes);
}
}
public static interface Callback {
public void call(int[] indexes, int deep);
}
public static void main(String[] args) {
Loop.each(new Callback() {
public void call(int[] indexes, int deep) {
System.out.println(Arrays.toString(indexes) + ", deep:" + deep);
}
}, 2);
}
}
给分吧,呵呵.deep表示当前嵌套层李悉迅陆仔数.times表示循环特定的次数。callback是业务代码.
public class Test {
public static void main(String[] args) {
iterate(2);
}
public static void iterate(int times) {
for(int i=0;i<times;i++) {
System.out.println("Loop "+times);
iterate(times-1);
}
}
}
大概档伏这个意思吧。。递归察纤多层循环
不过这个有败蠢仿什么意义呢?
//forNum为循环的个数
public void doAllFor(int forNum){
for(int i=0;i<forNum;i++){
doOneFor(10);/汪咐灶/设简搭置循环次数困扮
}
}
private void doOneFor(int endPos){
for(int i=0;i<endPos;i++){
}
}
public class TestFor {
public void testLoop(int loopCount){
label:
for (int i = 1; i < 3; i++) {
System.out.println("loopCount"+loopCount+": "+i);
if (loopCount==1) {
break label;
}else {
if (i==2) {
testLoop(--loopCount);
}
}
}
}
public static void main(String[] args) {
new TestFor().testLoop(4);
}
}
双层源空嵌套哪皮不行吗??
for (int i = 0; i <雹缓瞎 10; i++) {
for (int j = 0; j < i; j++) {
System.out.println("aaa");
}
}