Почему этот рекурсивный счет работает?
В документации по PHP есть такой пример рекурсивного счета. Помогите разобраться, как он работает.
Следующая простая функция рекурсивно считает до 10, используя для определения момента остановки статическую переменную
$count:Пример #6 Статические переменные и рекурсивные функции
<?php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--; } ?>
Ну вызвала себя функция 1 раз, добавила к $count 1. Зачем отнимать 1 сразу же после функции? Там же опять $count = 0 и получается бесконечная рекурсия? Или в момент вызова test() мы возвращаемся к началу функции, пропуская весь дальнейший код? Зачем тогда нам вообще $count--;?
Ответы (1 шт):
Вы не совсем поняли пример. Там статический count, он инициализируется один раз. Все остальные разы он только добавляет, а если учитывать, что от сначала только входит в ф-и, то отнимать он будет только на выходе из теста. Чтобы лучше понять, вынесите объявление статической переменной вне функции. Просто вычитание делается с расчетом, чтоб, когда ф-я закончила свою работу, значение переменной восстановилось в исходное значение.