Как работает рекурсивный метод?
Значение возвращается тому, кто его запросил. 
Например, если запросить  f.fact(1), то метод Factorial::fact сразу вернет 1.
Для запроса f.fact(2) цепочка вызовов будет такой:
сначала запрос Factorial::fact(2), который  вернет Factorial::fact(1) * 2.
В ответе есть снова запрос Factorial::fact(1), который возвращает 1. Таким образом, получаем 2*1, т.е. 2.
По этой же схеме проходят и остальные примеры: 
f.fact(10) -> f.fact(9) * 10 -> f.fact(8) * 9 * 10 -> ... -> f.fact(1) * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10.
Сделай// ...
result = fact(n - 1) * n;
System.out.println(result);
// ...
Станет понятно, что куда возвращается.