Satu-satunya alternatif untuk menggunakan loop adalah dengan menggunakan rekursi.
Anda dapat menentukan metode seperti
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Ini sangat tidak efisien dibandingkan dengan menggunakan loop biasa dan dapat meledak jika Anda memiliki banyak elemen dalam daftar.
Alternatif yang menghindari tumpukan overflow adalah dengan menggunakan.
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));
}
Ini sama tidak efisiennya, tetapi akan menghindari tumpukan melimpah.
Cara terpendek untuk menulis hal yang sama adalah
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
cetakan
sum(a) = 20
ArrayListtidak berisi sesuatu yang "dapat diringkas"? ArrayList dan array belum tentu sama. Adapun menjumlahkan angka dalam larik, itu adalah perulangan for yang sangat sederhana atas elemen dan menghitung jumlah kumulatif.