Ваш метод рекурсивный.Строка "check: "
печатается на каждом уровне этой рекурсии со значением, которое она имеет в данный момент на этом уровне.Сначала он печатает «самое внутреннее» значение (4), чем значение уровня выше (также 4), и, наконец, значение hte на верхнем уровне, которое равно 2 после увеличения на if
выше.И значение returns
всегда является значением от верхнего уровня.
Если вы хотите напечатать его только один раз, вы можете напечатать его только на самом внутреннем уровне, используя else
.Однако это все равно будет return
значением из итерации верхнего уровня;вместо этого следите за значением, возвращаемым рекурсивным вызовом, и обновляйте count1
соответственно.
if (! isAllTheSame(relevantList)) {
// we have to go deeper!
count1 = operationsNeeded(updatedList, count1 + 1);
} else {
// phew, finally done
System.out.println("check: " + count1);
}