Menu
Coddy logo textTech

Рекурсивные функции

Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 8 из 68.

Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения задачи. Это создает поведение, подобное циклу, но вместо использования традиционных циклов функция многократно вызывает саму себя с измененными параметрами до тех пор, пока не будет достигнуто решение.

Каждая рекурсивная функция должна иметь два основных компонента для правильной работы:

Базовый случай: Это условие, которое останавливает рекурсию. Без него функция вызывала бы саму себя бесконечно, что привело бы к сбою программы. Базовый случай определяет, когда функция должна вернуть результат вместо того, чтобы вызывать себя снова.

Рекурсивный шаг: Здесь функция вызывает саму себя с измененной версией исходной задачи, постепенно приближаясь к базовому случаю.

Вот простой пример рекурсивной функции, которая вычисляет факториал:

<?php
function factorial($n) {
    // Базовый случай: факториал 1 равен 1
    if ($n <= 1) {
        return 1;
    }
    
    // Рекурсивный шаг: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Выводит: 120
?>

В этом примере factorial(5) вызывает factorial(4), который вызывает factorial(3) и так далее, пока не достигнет factorial(1) (базовый случай). Затем результаты перемножаются в обратном порядке: 1 × 2 × 3 × 4 × 5 = 120.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

Создайте рекурсивную функцию с названием sumDigits, которая принимает положительное целое число и возвращает сумму его цифр. Функция должна использовать рекурсию, чтобы разбить число по цифрам.

Вы получите один входной параметр: положительное целое число. Прочитайте входные данные, вызовите свою рекурсивную функцию с этим числом и выведите сумму его цифр.

Формат входных данных: Одна строка, содержащая положительное целое число

Ожидаемый результат: Сумма всех цифр в числе

Шпаргалка

Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения задачи. Каждая рекурсивная функция нуждается в двух компонентах:

Базовый случай: Условие, которое останавливает рекурсию для предотвращения бесконечных циклов.

Рекурсивный шаг: Часть, где функция вызывает саму себя с измененными параметрами, приближаясь к базовому случаю.

Пример рекурсивной функции факториала:

<?php
function factorial($n) {
    // Базовый случай: факториал 1 равен 1
    if ($n <= 1) {
        return 1;
    }
    
    // Рекурсивный шаг: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Выводит: 120
?>

Попробуйте сами

<?php
// Чтение входных данных
$number = intval(fgets(STDIN));

// TODO: Создайте вашу рекурсивную функцию sumDigits здесь


// Вызов функции и вывод результата
echo sumDigits($number);
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком