Как «прочувствовать» рекурсию?
У меня точно такаяже проблема была в свое время, тоже не понимал до конца, в итоге понятие полностью пришло когда сделал простенький метод рекурсивного рыскания по файлам.
Пример алгоритма:функция_поиска( url ){
      если (url.файл()) тогда *делаем нужное к примеру смотрим расширение или имя*
      иначе цикл_перебора_содержимого_каталога вызов функция_поиска( url )
Лично я въехал с таких задач в рекурсию.
Еще и сразу, за static методы бьют по рукам а бывает и по голове. Лучше сразу учитесь их избегать и использовать только для финализированных констант.
Как сделать этот код "правильнее", потому что не думаю что разумно было бы постоянно писать: "СколькоТроек(тожесамоечисло, тожесамое число)"?private static int ThreeCounterImpl(int number, int current) { ... }
public static int ThreeCounter(int number) { return ThreeCounterImpl(number, number); }