Ответ на вопрос можно прочитать прямо в коде:
Assume n is 2
(n % 2 == 0) is true therefore n <- 1
(n % 2 != 0) is also true therefore 4 <- n
this warrants a call to function with n = 4, which is then changed to 2 and
"back to square 1"
на заменяя второй тест другим , вы решаете эту логическую проблему за счет возможного увеличения рекурсии (поскольку в текущей логике две операции иногда выполняются за одну итерацию). Такое исправление также решит более тонкую ошибку , заключающуюся в том, что в текущей версии не все новые значения n выводятся на печать.
Теперь, для дополнительного кредита, докажите, что независимо от начального значения n число рекурсий конечно (то есть последовательность сходится к 1). ; -)