Jedyną alternatywą dla używania pętli jest użycie rekurencji.
Możesz zdefiniować metodę, taką jak
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Jest to bardzo nieefektywne w porównaniu do używania zwykłej pętli i może wybuchnąć, jeśli masz wiele elementów na liście.
Alternatywą, która pozwala uniknąć przepełnienia stosu, jest użycie.
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));
}
Jest to równie nieefektywne, ale pozwoli uniknąć przepełnienia stosu.
Najkrótszym sposobem napisania tego samego jest
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
wydruki
sum(a) = 20
ArrayListnie zawiera czegoś, co można „podsumować”? ArrayList i tablica niekoniecznie to to samo. Jeśli chodzi o sumowanie liczb w tablicy, jest to bardzo prosta pętla for po elementach i obliczanie skumulowanej sumy.