Помогите разобраться с рекурсией в PHP

Рейтинг: 0Ответов: 1Опубликовано: 25.02.2023

Функция должна выводить числа от 1 до 10 с помощью рекурсии (по заверениям Дмитрия Трепачёва), потому как указана простейшим примером на котором он разбирает эту самую рекурсию, но у меня она почему-то только ломает сэндбокс и не работает.

Помогите разобраться, пожалуйста.

$i = 1;

function func() {
    echo $i;
    $i++;
    
    if ($i <= 10){
        func(); // здесь функция вызывает сама себя
    }
}
func();

Ответы

▲ 0Принят

Если закомментировать func(); в условии if то можно будет увидеть предупреждение

Warning: Undefined variable $i in /home/user/scripts/code.php on line 6

Поэтому код выполняется бесконечно. Код неявно преобразовывает переменную в 0 при операции инкрементирования. И поэтому условие всегда истино (получается 1<=10). Чтобы переменная была определена из глобальной области, нужно в функции её подключить:

function func(){
    global $i; // <--------
    ...
    ...
}