Рекурсия заставляет код "углубляться" внутрь структуры данных, доходя до самого конца, а затем начинает возвращаться обратно, выполняя оставшуюся часть кода для каждого уровня вызова. Это и приводит к тому, что значения выводятся в обратном порядке.
Либо так: