Это рекурсивная функция, которая при каждом вызове добавляет значение первого элемента на карте, а затем удаляет его.
Если карта пуста, возвращается 11
Итак: 9+7+5+3+1+11 =
36 (9,7,5,3,1 для каждого значения на карте и 11 для пустого)
Кстати, для меня это ужасный способ учить рекурсии (потому что карта создает слишком много шума)
Более простой (и я думаю, более эффективный) способ был бы:
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class ArrayList2009 {
public static void main( String [] args ) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(3);
list.add(5);
list.add(7);
list.add(9);
System.out.println( addOne( list ) );
}
private static int addOne( List<Integer> list ){
if ( list.isEmpty() ) {
return 11;
} else {
Iterator<Integer> i = list.iterator();
int num = i.next();
i.remove();
return num + addOne( list );
}
}
}
Что делает то же самое, но вносит меньше шума, потому что интерфейс List проще для понимания.