2014-03-25 42 views
0

递归填充简单阵列,然后打印所有内容:差异的ArrayList递归和阵列

void printArray(int[] a,int i) 
    { 
     if(i > 5) 
      return; 

     a[++i] = i; 
     printArray(a,i); 

     System.out.println("array size is "+a.length); 
     for(int k=0;k<i;k++) 
      System.out.print(a[k]+" "); 
     System.out.println(); 
    } 

输出:数组大小在main定义)

array size is 6 
0 1 2 3 4 
array size is 6 
0 1 2 3 
array size is 6 
0 1 2 
array size is 6 
0 1 
array size is 6 
0 

现在,拿这个简单的ArrayList片段:

void printArray(ArrayList a, int n) 
{ 
    if(++n > 5) 
     return; 

    a.add(n); 
    printArray(a,n); 

    System.out.println("Size of array list is "+a.size()); 
    System.out.println("Content of Array list are "+a+"\n\n"); 
} 

输出:

Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5] /*this is fine */ 


Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5] /*should have been [0, 1, 2, 3, 4]*/ 


Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5]/*should have been [0, 1, 2, 3]*/ 


Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5]/*should have been [0, 1, 2]*/ 


Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5]/*should have been [0, 1]*/ 


Size of array list is 6 
Content of Array list are [0, 1, 2, 3, 4, 5]/*should have been [0]*/ 

问题:在存储器实现的Recursion stackarray输出就是我正确理解,以前下面堆保持值比堆栈它上面少一个或i增量,但使用相同的实现,为什么所有的堆栈ArrayList包含值应该只有在top的递归堆栈?

如何在ArrayList的情况下执行递归?

+0

你是不是该让什么.......在矿井第一个你已经使用基于i循环,因为我的价值在不同模式功能CAL不同(1,2,3,4,5)这就是为什么每个函数调用都会得到不同的输出,但是在arraylist实现中,您只需要打印all元素就可以得到整个数组列表。 –

+0

当'递归列表返回到第二个堆栈时,在'arraylist'中...然后在第二个堆栈中,元素'5'没有填充....它怎么能被打印呢? – NoobEditor

回答