Codebra
30 января 2026 в 20:29

Урок 18. Рекурсия в PHP

PHP рекурсия - это метод, при котором функция вызывает саму себя для решения задачи, разбивая её на подзадачи. Используется для обхода структур, вычислений и алгоритмов.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по 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.

Задачи

  1. Создайте функцию, которая принимает целое число n и возвращает сумму всех чисел от 1 до n.
  2. Создайте функцию, которая возвращает n-й элемент последовательности Фибоначчи.
  3. Создайте функцию для обратного отображения строки.
  4. Создайте функцию для поиска элемента в массиве. Функция должна возвращать индекс элемента, если он найден, или -1, если нет.
  5. Создайте функцию для переворачивание массива в обратном порядке.
  6. Создайте функцию, которая принимает целое число и возвращает сумму его цифр.
📝

Не забудьте посмотреть новый материал на Codebra по тегу PHP.