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 stack
,array
输出就是我正确理解,以前下面堆保持值比堆栈它上面少一个或i
增量,但使用相同的实现,为什么所有的堆栈ArrayList
包含值应该只有在top
的递归堆栈?
如何在ArrayList
的情况下执行递归?
你是不是该让什么.......在矿井第一个你已经使用基于i循环,因为我的价值在不同模式功能CAL不同(1,2,3,4,5)这就是为什么每个函数调用都会得到不同的输出,但是在arraylist实现中,您只需要打印all元素就可以得到整个数组列表。 –
当'递归列表返回到第二个堆栈时,在'arraylist'中...然后在第二个堆栈中,元素'5'没有填充....它怎么能被打印呢? – NoobEditor