int [] a = {1,2,3};
  for( int i=0;i<a.length;i++){
  for( int j=0;j<a.length;j++){
  for( int k=0;k<a.length;k++){
  for ....
  .
  .
  .
  System.out.println(a[i]+""+a[j]+""+a[k]+ ...+a[n]);
  .
  .
  .
    }
  } 
  }
  }        嵌套n层循环,如何用递归实现?
        帮帮我吧,想了半天也没搞定! :(

解决方案 »

  1.   

    n 代表里面嵌套几层循环,没有特殊意义,包括那个数组,只是为了说明方便。比如 n = 5 就代表有5层嵌套循环,以此类推一直到n。int [] a = {1,2,3}; 
      for( int i=0;i <a.length;i++){ 
        for( int j=0;j <a.length;j++){ 
          for( int k=0;k <a.length;k++){ 
            for( int h=0;k <a.length;k++){ 
              for( int l=0;k <a.length;k++){ 
      
                System.out.println(a[i]+" "+a[j]+" "+a[k]+" "+a[h]+" "+a[l]); 
              }
            }
          } 
        } 
      } 
     
      

  2.   

    n 是小于上面那个数组的长度 (n < a.length),不过那个数组这里没有写太多。只有3个值
      

  3.   

    i , j , k 应该有关系吧。这样只是循环。
      

  4.   


    public class Test3 {  
      public static void main(String[] args) {
      int [] a = {1,2,3,4,5,6,7,8,9,10};    
      for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a.length; j++) {
    for (int k = 0; k < a.length; k++) {
    for (int m = 0; m < a.length; m++) {
    for (int n = 0; n < a.length; n++) {
    System.out.println(a[i]+" "+a[j]+" "+a[k]+" "+a[m]+" "+a[n]); 
    }
    }
    }
    }
     }
    }
    }是把这个改成递归?
      

  5.   

    全排列可以有重复的情况吗, 这个好像不是吧。这个程序的功能是 ,从m个集合中,取n个元素(n < m),枚举出 所有 n个元素的 “组合”,这个组合可以和自身重复。比如下面例子。  集合{1,2,3} 任意取两个数,其结果是:  11
      12
      13  21
      22
      23  31
      32
      33  其实答案的个数就是 ,集合所有元素数m的n次方 
      

  6.   

    llddy兄,先谢了!恩,是的,不过,这个循环嵌套,可以有多层,也可能是1层。
      

  7.   

    public class test
    {
    public static void main(String[] args)
    {
    int [] a = {1,2,3,4};
    String b="";
    abc(a, b, 1);
    }
    public static void abc(int[] a, String b, int n)
    {
    String b1 = b;
    for (int i = 0; i < a.length; i++)
    {
    b1= (b == "" ? "" : b + " ") + a[i];
    if (n < a.length)
    abc(a, b1, n+1);
    else
    System.out.println(b1);
    }
    }}
      

  8.   

    public class SequenceGenerator {    private char[] elements;
        private char[] sequence;    public SequenceGenerator(char[] elements, int sequenceLength) {
            this.elements = elements;
            this.sequence = new char[sequenceLength];
        }    public static void main(String[] args) {
            new SequenceGenerator(new char[] { '1', '2', '3' }, 5).generate();
        }    public void generate() {
            generate(0);
        }    private void generate(int index) {
            for (int i = 0; i < elements.length; i++) {
                sequence[index] = elements[i];
                if (index + 1 < sequence.length) {
                    generate(index + 1);
                } else {
                    System.out.println(String.valueOf(sequence));
                }
            }
        } 
    }
      

  9.   

    public class Test {
    int[] array; public Test(int[] array) {
    this.array = array;
    } public void printArray(int n) {
    if (n == 1) {
    for (int i = 0; i < array.length; i++) {
    doSomething();
    }
    } else {
    n -= 1;
    for (int j = 0; j < array.length; j++) {
    printArray(n);
    }
    } } private void doSomething() {
    // TODO:add any thing you want to do;
    } public static void main(String[] args) {
    int[] a = { 1, 2, 3 };
    Test t = new Test(a);
    t.printArray(3); }
    }
      

  10.   

    这么多答案,只有18楼的是正确的,看我的代码 public class TestM { /**
     * @param args
     */
    public static void main(String[] args) {
     String [] a = {"1","2","3","4"}; 

            int n=4;
        System.out.println( printArr(a,n));
    } private static String printArr(String[] a,int n) {
    if(n<=1)

    {
    String ss="";
    for (int i = 0; i < a.length; i++) {

    ss=ss+a[i]+" ";
    }
    return ss;
    }
    else
    {
    String s=printArr( a, n-1);
    String returnValue="";
    for (int i = 0; i < a.length; i++) {
    returnValue=returnValue+method(a[i],s);
    }

    return returnValue;
    }


    } private static String method(String i, String s) {
    String value="";

    String arr[]=s.split(" ");
    for (int j = 0; j <arr.length; j++) {

    value=value+i+arr[j]+" ";
    }
    return value;
    }}
      

  11.   

    以三层为例:public func(int i,int j,int k) {
      int ii,jj,kk;
      kk++;
      if kk > a.length {
        kk = 0;
        jj++;
      }
      if jj > a.length {
        jj = 0;
        ii++;
      }
      System.out.println(a[i]+","+a[j]+","+a[k]); 
      func(ii,jj,kk);
    }
      

  12.   

    按照樓主的意思,是否做個全序列...n個元素有n^n種情況啊...5個元素的結果己很大啦...public class FromCSDN {

    public static void recursionInsteadFor(int n , String str, char[] pk) {
    if (n > pk.length) return;
    if (n == pk.length) System.out.println(str);
    for (int i = 0 ; i < pk.length ; ++ i)
    recursionInsteadFor(n + 1, str + pk[i], pk);
    }

    public static void main(String[] args) {
    char[] p = new char[] {'a','b','c','d','e'};
    FromCSDN.recursionInsteadFor(0, "", p);
    }}
      

  13.   

    唉 這幾天化這麼多精力在csdn上解答問題,都得不到分...
      

  14.   

    /**
     * 
     */
    package houlei.test;import java.util.Collection;
    import java.util.LinkedList;/**
     * 该类创建于 2008-10-17 下午04:53:56
     * 
     * @version 1.0.0
     * @author 侯磊
     */
    public class L { public static void main(String[] args) {
    fun(3, new int[] { 1, 2, 3 }, null);
    } /**
     * @param level 嵌套的层次
     * @param a 待传的数组
     * @param rs 首次调用的时候,为null
     */
    public static void fun(int level, int a[], int [] rs) {
    if (rs == null) rs = new int[a.length];
    for (int i = 0; i < a.length; i++) {
    if (level <= 0) {
    StringBuffer sb = new StringBuffer();
    for(int k=0;k<rs.length;k++)sb.append(rs[k]);
    System.out.println(sb.toString());
    return;
    } else {
    rs[rs.length-level]=a[i];
    fun(level - 1, a, rs);
    }
    }
    }}