Задать вопрос
@XXX-prog

Чем отличается «--$x» от «$x — 1» в данном контексте?

Чем отличается --$x от $x - 1 в данном контексте? Если ничем, почему --$x ломает рекурсивную функцию?

function fac($x) {
		if($x === 0){
			return 1;
		}
		return $x * fac($x - 1); // --$x, $x - 1
	}
  • Вопрос задан
  • 241 просмотр
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@XXX-prog Автор вопроса
Когда понимаешь как отрабатывает компилятор, вопросов по рекурсии больше не возникает.
В этом видео очень круто рассмотрен механизм работы рекурсии: https://www.youtube.com/watch?v=rh1mP02NFoM
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@D3lphi
Как это ничем?
--$x производит декремент переменной, а затем передает её в качестве аргумента функции.
$x - 1 передает функции значение, полученное при декременте переменной $x.
Таким образом, в первом случае изменяется значение самой переменной, во втором - нет. А так как значения выражения вычисляются справа налево (для получения результата выражения необходимо сначала выполнить функцию), то в вашем примере, выделенный жирным $x, $x * fac(--$x) будет иметь значение, уже уменьшенное на единицу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽