Добрый день. Сейчас изучаю PHP и на теме "Рекурсия" столкнулся со скриптом вычисления факториала. Никак не могу в него въехать, а если не въеду, то дальше PHP изучать мне бессмысленно. разъясните , пожалуйста, как он работает.
Вот сам код:
<?
function fact($x)
{
if ($x == 1)
return 1;
else
return $x * fact($x - 1);
}
?>
С первой половиной все понятно.Если факториал равен единице, вернуть значение "единица". Непонятно остальное. Допустим, входной параметр функции 5. Тогда последняя строка должна выглядеть так:
return 5 * fact(5 - 1)
Здесь функция нам возвращает значение 20 ( если я правильно понял. 5*4) и вызывает саму себя. Т.е. получаем
return 4 * fact(4 - 1) тут функция вернула значение 12
Но факториал числа 5 равен 120, а 20* 12 уже 240. Т.е, чтобы результат получился верным, нужно, чтобы вместо
return 4 * fact(4 - 1) было return 20 * fact(4 - 1), и далее return 60 fact(3 - 1)? , а затем return 120 fact(2 - 1).
Но каким образом тогда код присваивает переменной $x значения 20,60,120, когда в виде входного параметра мы задали ему значение 5?
Понимаю, вопрос глупый, но я только учусь. заранее спасибо за любые разяъснения и комментарии.