Нет, после шага
return 4 * factorial(3)
, будет шаг
return 3 * factorial(2)
Потому что твое
factorial(n - 1)
на предыдущей глубине, будет тем самым
factorial (n)
для нового вызова функции. И так пока ты не дойдешь до терминального сценария (то есть то
return 1
)
return 4 * fact(4 - 1) == return 4 * (3 * (2 * 1))
return 3 * fact(3 - 1) == return 3 * (2 * 1)
return 2 * fact(2 - 1) == return 2 * 1
Поиграйся вот здесь:
https://pythontutor.com/visualize.html#mode=edit
Тут неплохая визуализация того, что происходит