Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Рекурсія | Рекурсія та лямбда-функції
Підручник з функцій Python
Секція 5. Розділ 1
single

single

Рекурсія

Свайпніть щоб показати меню

Note
Визначення

Рекурсивна функція — це функція, яка викликає саму себе для розв'язання задачі шляхом поділу її на менші, простіші частини.

Ключові елементи рекурсії:

  • Базовий випадок: умова, яка зупиняє рекурсію;
  • Рекурсивний випадок: частина, де функція викликає саму себе з простішим вхідним значенням.

Чому використовують рекурсію?

Деякі задачі природно виражаються у вигляді менших підзадач. Рекурсія забезпечує зрозумілий і елегантний спосіб їх розв'язання, коли функція викликає саму себе для обробки простіших випадків. Зазвичай використовується для обробки дерев, пошуку шляхів або розбиття структур (наприклад, списків, рядків).

Простий приклад

123456
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)

Розгляньте крок за кроком, як це працює:

  1. times = 3 → умова істинна, виводиться повідомлення, викликається print_message(message, 2);
  2. times = 2 → умова істинна, виводиться повідомлення, викликається print_message(message, 1);
  3. times = 1 → умова істинна, виводиться повідомлення, викликається print_message(message, 0);
  4. times = 0 → умова хибна, рекурсія зупиняється.

Результат: повідомлення виводиться три рази.

Стек викликів

Кожного разу, коли функція викликає саму себе, до стека викликів додається новий фрейм — це структура пам'яті, яка відстежує активні виклики функцій. Коли досягається базовий випадок, кожен попередній виклик завершується один за одним у зворотному порядку.

Note
Примітка

Кожна рекурсивна функція повинна мати базовий випадок. Без нього функція буде викликати саму себе нескінченно і спричинить RecursionError.

Завдання

Проведіть, щоб почати кодувати

Реалізація рекурсивної функції list_sum, яка обчислює суму всіх елементів у списку.

  1. Якщо список numbers порожній, повернути 0 — це базовий випадок;
  2. В іншому випадку повернути перший елемент доданий до результату рекурсивного виклику з рештою списку.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 1
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt