Внимание! На этой странице вы найдете материал урока из архивного курса по PHP. Курс был написан в 2024 году одним из первых учеников Codebra и, к моменту написания курса, опытным бэкэнд-разработчиком. К сожалению, курс не был дописан, а его автор молча пропал.
Полный список уроков доступен по тегу Архивный курс по PHP и на странице первого урока.
Данная тема является сложной для понимания, так как рекурсия — это не совсем цикл. Проще говоря, рекурсия — это функция, которая вызывает саму себя.
Примитивный пример:
<?php
function recursion()
{
recursion();
}
recursion();
?>
При запуске такого кода произойдёт ошибка Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 262144 bytes) in /home/user/scripts/code.php on line 4. Происходит переполнение стека вызовов и переполнение памяти. Нам нужно добавить условие.
Посчитаем факториал числа:
<?php
function factorial($n)
{
if ($n <= 1) return 1; // Условие можно записать и в одну строчку.
return $n * factorial($n - 1); // Происходит вызов функции
}
echo factorial(5); // 120
?>
Если $n больше 1, функция вызывает саму себя с аргументом $n - 1. Это создает цепочку вызовов, пока не достигнет условия выхода. На каждом уровне умножается текущее значение $n на факториал следующего числа.
Рекурсии хорошо помогают в переборе больших данных, когда мы не знаем на сколько они вложены друг в друга. Конечно есть ограничение, но я не думаю что вы будете столько перебирать :)
Советую сейчас вам попрактиковаться. Пока больше о рекурсии вам знать не нужно, чтобы не забивать голову. Попробуйте решить задачи, но не смотрите сразу решения в интернете. Лучше потратить время на самостоятельное решение и приобрести практические навыки. Главное — будьте внимательны и читайте то, что пишете.
Заключение
Поздравляю! Эти уроки, возможно, показались вам немного нудными, но они необходимы, чтобы вы поняли основы синтаксиса и возможности языка. Мы научились создавать пользовательские функции и применять встроенные функции PHP. Далее мы будем изучать что-то новое, начиная от работы с файловой системой и до работы с базами данных MySQL. В следующем разделе мы с вами научимся встраивать PHP в HTML.
Задачи
- Создайте функцию, которая принимает целое число
nи возвращает сумму всех чисел от1доn. - Создайте функцию, которая возвращает
n-йэлемент последовательности Фибоначчи. - Создайте функцию для обратного отображения строки.
- Создайте функцию для поиска элемента в массиве. Функция должна возвращать индекс элемента, если он найден, или
-1, если нет. - Создайте функцию для переворачивание массива в обратном порядке.
- Создайте функцию, которая принимает целое число и возвращает сумму его цифр.
Не забудьте посмотреть новый материал на Codebra по тегу PHP.