public static int x = 0;
public static int y = 0;public static void ss() {
x = y;
y++;
for(h[x]=0;h[x]<sz[x].length;h[x]++) {
if(x == 2) {  // 等于2 只是举个例子,即有3个for循环;
System.out.println("==========:"+g);
g++;
}else {
ss();  // 递归
}
}
}现在的问题是,递归完后,只程序只执行了最后一个for ,假设每个数组的长度定为3,那么,输出时,应该是 3*3*3 ,得27条输出语句,但现在只有3条, 也就是,程序只走了最后一个循环,前面的两个循环没执行,请各位指教,是逻辑出问题了吗?

解决方案 »

  1.   

    (h[x]=0;h[x] <sz[x].length;h[x]++)  得看你的这个循环的条件了 h数组和sz数组都没有提供具体的信息怎么看
      

  2.   

    哦,那个h[x] , sz[x] 都是没问题的,就是根据动态X 的值,来调用不同的变量或数组,现在问题是,是不是逻辑有问题
      

  3.   

    if(x == 2) {  // 等于2 只是举个例子,即有3个for循环; 
    这句没看懂,你实际的代码就是这样么?
      

  4.   

    To 4L:恩,那个等于2 就是那样的, x 是从 0 增长的, 等于2时,即循环了3 次了
      

  5.   

    我晕你的条件只让它执行最后一个for
      

  6.   

    To 8L:请问,怎讲?  x== 2 的时候,我只想是终止递归, 难道 ....
      

  7.   

    粗略的看了下,帮你理下过程,第一次,x=0,y=1,然后重新走ss
    然后x=1,y=2,再走ss,这时候x=2,走if,就打印一条改正嘛,你这逻辑我没看懂,不知道你要干啥,你说清楚点,我再帮你看
      

  8.   

    粗略的看了下,帮你理下过程,第一次,x=0,y=1,然后重新走ss 
    然后x=1,y=2,再走ss,这时候x=2,走if,就打印一条 改正嘛,你这逻辑我没看懂,不知道你要干啥,你说清楚点,我再帮你看
      

  9.   

    To 12L:你大概其的说的没错, 想实现的什么呢, for 的嵌套循环; 写 x= 2 呢,是举个例子,即会有 3 个 for 循环产生;
    for 0 
      for 1
        for 2  有3个循环的话,那么它的输出,应该是3个循环的乘积,每个for 的是个数组,假设每个数组的长度是3,
    那么输出的,应该是 3*3*3 条记录,现在输出的,只有3条记录,也就是只执行了最后一个for ,想问的问题就是在这,为什么前两个 for 没被执行??
      

  10.   

    算了,这个问题还是这么问吧:想产生一个 for 嵌套循环,for 循环的个数是不定的(就是说,到底有几个for循环),比如说,有3个, 然后呢,在最后一个循环里写条输出语句, 那么这个输出语句的个数,应该是这几个循环的长度的乘积吧,比如,每次循环的是个数组(每次的数组不同),每个数组的长度是3,那么,得到的输出语句,是不是应该是 3*3*3, 请问,如何实现,? for 循环的嵌套,是不是用递归来产生 ?? 麻烦列出代码!!问题的大概其的意思:for 数组1
        for 数组2
           for 数组3 
                // 写输出语句,最终,应该得到,3*3*3条输出语句!