【发布时间】:2014-07-07 21:07:44
【问题描述】:
我遇到以下问题:我想制作一个程序,将数据列表(它将是纬度/经度、ICAO 等机场信息)转换为数据库,我不仅可以对它们进行排序,而且然后有一种方法打印出某些脚本,用于以不同方式需要数据的其他程序。
我设法创建了一个列表,该列表将原始数据(来自 .txt)按不同的机场进行拆分,以便每个元素都包含一个(例如(12921, 'CYAC', 'Cat Lake Airport', 'CA', 51.7272, -91.8244, 0, 0, ''))。当我尝试使用例如通过调用返回列表中下一个元素的值加上它自己的值的递归方法来计算列表的方法时,我在带有if(next!=null) 的行中得到一个StackOverflowError。这是方法本身:
public int getLength(){
if(next!=null){
return next.getLength()+1;
}
else{
return 1;
}
}
机场的数量在 42000 左右,但它(显然)创建了 42000 个对象就好了,只是不想通过它们。
关于如何避免该错误的任何想法?数组会更智能吗?感谢您的帮助,最好的问候!
【问题讨论】:
-
循环不是更简单吗?
-
您将使用当前的方法非常快速地访问 Java 的 recursive limit。为什么需要递归解决方案?
-
我使用了递归的,因为这是我们在学校学到的最好的东西......显然不适合那种尺寸:)
-
你可以让它尾递归并使用accumulator。
标签: java arrays recursion stack-overflow