@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
	}
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@XXX-prog Автор вопроса
Когда понимаешь как отрабатывает компилятор, вопросов по рекурсии больше не возникает.
В этом видео очень круто рассмотрен механизм работы рекурсии: https://www.youtube.com/watch?v=rh1mP02NFoM
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@D3lphi
Как это ничем?
--$x производит декремент переменной, а затем передает её в качестве аргумента функции.
$x - 1 передает функции значение, полученное при декременте переменной $x.
Таким образом, в первом случае изменяется значение самой переменной, во втором - нет. А так как значения выражения вычисляются справа налево (для получения результата выражения необходимо сначала выполнить функцию), то в вашем примере, выделенный жирным $x, $x * fac(--$x) будет иметь значение, уже уменьшенное на единицу.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект