Я полагаю, что у вас есть некоторая путаница, связанная с концепцией рекурсии.
Давайте рассмотрим выполнение вашего кода за исполнением на примере значения = 3.
Вывод должен быть 3! = 3 * 2 * 1 = 6
Теперь давайте подумаем, как вы будете кодировать работу и почему она должна возвращать 1 в блоке If.
1-й факториал выполнения (3) => условие не выполнится,поэтому он вернет факториал (2) * 3;
2-е условие факториала выполнения (2) => не выполнится, поэтому он вернет факториал (1) * 2;
3-й факториал выполнения (1) => условие пройдет, поэтому оно вернет 1;
Теперь подставим эти значения, указанные выше,
factorial (1) = 1,
factorial (2)= 1 * 2
и factorial (3) = 1 * 2 * 3
Итак, это то, что мы хотели.
Теперь представьте, что вы вернете любое другое, кроме 1,тогда выход изменится
отл. если мы вернем 2, то 2 * 2 * 3 (не 3!)
Надеюсь, это поможет вам.