2017-09-06 126 views
-3

int m = 10;如何通过递归实现未知层的嵌套循环?

int n = 9; 

    int p = 4; 

    int q = 7; 

    for(int i=0;i<m;i++){ 

     int a = i; 

     for(int j=0;j<n;j++){ 

      int b = j; 

      if(b==a){ 

       continue; 

      } 

      for(int k=0;k<p;k++){ 

       int c = k; 

       if(c==b || c==a){ 

        continue; 

       } 

       for(int l=0;l<q;l++){ 

        int d = l; 

        if(d==c || d==b || d==a){ 

         continue; 

        } 

        System.out.println("i="+i+",j="+j+",k="+k+",l="+l); 

       } 

      } 

     } 

    } 

例如,代码片段是四层嵌套循环,和之间的回路具有数据相关性,和嵌套层是不确定的,它会如何实现通过递归(嵌套是不确定的)?

+0

你尝试过什么迄今为止获得递归工作? – tima

+1

我在工作中遇到问题,必须按循环解决,循环次数不确定,必须通过递归方法来实现,但我不知道如何去做 –

+0

https://www.javatpoint .com /递归在java这个教程告诉你如何使用递归.. – Sh4m

回答

0
void recurse(int[] a, int[] b, int depth) { 
    if (depth == a.length) { 
     System.out.println(Arrays.toString(b)); 
     return; 
    } 

    outer: 
    for (int i = 0; i < a[depth]; i++) { 
     for (int j = 0; j < depth; j++) { 
      if (i == b[j]) { 
       continue outer; 
      } 
     } 
     b[depth] = i; 
     recurse(a, b, depth + 1); 
    } 
} 

样品电话:

recurse(new int[] {10, 9, 4, 7}, new int[4], 0); 
+0

哇,你太棒了!你是怎么做到的?我很佩服你! –

+0

Stackoverflow真的是一个不错的地方,感谢stackoverflow.com –

+0

我还有一个问题要问你, 给你两个整数数组a,b和一个整数c(大于或等于0),加上数组a的所有元素加上整数c等于所有元素的总和数组b的每个元素表示一个事务明细数据,数组b的每个元素表示一个汇总事务数据,整数c代表费用 –