Данный раздел предполагает помощь начинающим программистом.
Преследуется цель демонстрации в первую очередь понятного, а уже во вторую - быстрого кода.
Ну и по поводу убыстрения - вызов fact происходит гораздо чаще, а там можно заменить
if ((n == 1) || (n == 0))
на
if (n < 2)