ทางเลือกเดียวในการใช้การวนซ้ำคือการใช้การเรียกซ้ำ
คุณสามารถกำหนดวิธีการเช่น
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
สิ่งนี้ไม่มีประสิทธิภาพมากเมื่อเทียบกับการใช้ลูปธรรมดาและอาจระเบิดได้หากคุณมีองค์ประกอบมากมายในรายการ
อีกทางเลือกหนึ่งที่หลีกเลี่ยงไม่ให้สแตกล้นคือการใช้
public static int sum(List<Integer> ints) {
int len = ints.size();
if (len == 0) return 0;
if (len == 1) return ints.get(0);
return sum(ints.subList(0, len/2)) + sum(ints.subList(len/2, len));
}
สิ่งนี้ไม่มีประสิทธิภาพพอ ๆ กัน แต่จะหลีกเลี่ยงไม่ให้สแตกล้น
วิธีที่สั้นที่สุดในการเขียนสิ่งเดียวกันคือ
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
พิมพ์
sum(a) = 20
ArrayListไม่มีสิ่งที่ "สรุปได้"? ArrayList และอาร์เรย์ไม่จำเป็นต้องเป็นสิ่งเดียวกัน สำหรับการรวมตัวเลขในอาร์เรย์นั้นง่ายมากสำหรับการวนซ้ำองค์ประกอบและคำนวณผลรวมสะสม