Menu
Coddy logo textTech

Рекурсивные функции. Часть 2

Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 61 из 78.

Рекурсивные функции обычно состоят из двух частей:

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

Пример: вычисление факториала с использованием рекурсии:

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:]), пока строка не станет пустой или не будет содержать только один символ. Каждый вызов добавляет первый символ к результату рекурсивного вызова, эффективно переворачивая строку.

challenge icon

Задание

Легко

Напишите рекурсивную функцию с именем fibonacci, которая принимает положительное целое число n в качестве аргумента и возвращает n-е число Фибоначчи. Последовательность Фибоначчи определяется следующим образом:

  • fibonacci(1) = 0
  • fibonacci(2) = 1
  • fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) для n > 2.

Пример входных данных:

n = 6

Пример вывода:

5

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

def fibonacci(n):
    # Напишите код здесь
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Python