Вы просто делаете это неправильно. List.remove () не возвращает список.
List<Integer> a = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
System.out.println(listSize(a));
public static int listSize(List<Integer> lst) {
if (lst.isEmpty()) {
return 0;
}
lst.remove(0);
return 1 + listSize(lst);
}
А вот версия, которая восстанавливает список, возвращая элементы в правильном порядке.
public static int listSize(List<Integer> lst) {
int b;
if (lst.isEmpty()) {
return 0;
}
b = lst.remove(0);
int v = 1 + listSize(lst);
lst.add(0, b);
return v;
}