ArrayList 用 iterator遍历问题
不管1和2哪一句存在,或者两句都不存在,打印出的结果都是12372474494898969896494824741237请问这个是有什么问题呢?为什么没办法控制list中...
不管1和2哪一句存在,或者两句都不存在,打印出的结果都是
1237
2474
4948
9896
9896
4948
2474
1237
请问这个是有什么问题呢?为什么没办法控制list中数据的打印顺序呢? 展开
1237
2474
4948
9896
9896
4948
2474
1237
请问这个是有什么问题呢?为什么没办法控制list中数据的打印顺序呢? 展开
1个回答
展开全部
问题根本不在于list中的数据顺序,而在于你用了递归却不理解递归。
你的list是局部变量,每层调用中的list都是不同的对象,整个方法中只有一次list.add(n),那么每层调用中的list中其实只有一个元素,这当然无论反转还是排序都没有任何效果,整个输出for循环就相当于一句System.out.println(n)。
所以你的doublenum方法其实就是这样的:
doublenum{
输出n;
如果n<5000,doublenum(2*n);
输出n;
}
再加上你输入的初始数据1237,按照递归调用的执行顺序输出就是那样的。
你的list是局部变量,每层调用中的list都是不同的对象,整个方法中只有一次list.add(n),那么每层调用中的list中其实只有一个元素,这当然无论反转还是排序都没有任何效果,整个输出for循环就相当于一句System.out.println(n)。
所以你的doublenum方法其实就是这样的:
doublenum{
输出n;
如果n<5000,doublenum(2*n);
输出n;
}
再加上你输入的初始数据1237,按照递归调用的执行顺序输出就是那样的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询