Рекурсивные функции. Часть 2
Часть раздела Logic & Flow путешествия по Python на Coddy — урок 61 из 78.
Рекурсивные функции обычно состоят из двух частей:
- Базовый случай: Определяет, когда рекурсия должна остановиться.
- Рекурсивный шаг: Вызывает функцию саму себя с меньшими входными данными.
Пример: Вычисление факториала с использованием рекурсии:
def factorial(n):
if n == 1: # Базовый случай
return 1
return n * factorial(n - 1) # Рекурсивный вызов
print(factorial(5)) # Вывод: 120Здесь функция продолжает вызывать саму себя с n - 1, пока не достигнет 1, где рекурсия останавливается.
Пример: Реверс строки:
def recursive_reverse(s):
if len(s) <= 1: # Базовый случай: пустая строка или строка из одного символа
return s
else:
return recursive_reverse(s[1:]) + s[0] # Рекурсивный шаг
text = "hello"
result = recursive_reverse(text)
print(result)
# Вывод: ollehВ этом примере функция recursive_reverse вызывает саму себя с оставшейся частью строки (s[1:]) до тех пор, пока строка не станет пустой или не будет содержать только один символ. Каждый вызов добавляет первый символ к результату рекурсивного вызова, эффективно переворачивая строку.
Задание
ЛегкоНапишите рекурсивную функцию с именем fibonacci, которая принимает положительное целое число n в качестве аргумента и возвращает n-е число Фибоначчи. Последовательность Фибоначчи определяется следующим образом:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)дляn > 2.
Пример входных данных:
n = 6Пример выходных данных:
5Шпаргалка
Рекурсивные функции состоят из двух основных частей:
- Базовый случай: определяет, когда рекурсия должна остановиться
- Рекурсивный шаг: вызывает функцию саму себя с меньшими входными данными
Пример вычисления факториала:
def factorial(n):
if n == 1: # Базовый случай
return 1
return n * factorial(n - 1) # Рекурсивный вызов
print(factorial(5)) # Результат: 120Пример переворота строки:
def recursive_reverse(s):
if len(s) <= 1: # Базовый случай: пустая строка или строка из одного символа
return s
else:
return recursive_reverse(s[1:]) + s[0] # Рекурсивный шаг
text = "hello"
result = recursive_reverse(text)
print(result) # Результат: ollehПопробуйте сами
def fibonacci(n):
# Напишите здесь кодВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary Sorter