single
Рекурсія
Свайпніть щоб показати меню
Рекурсивна функція — це функція, яка викликає саму себе для розв'язання задачі шляхом поділу її на менші, простіші частини.
Ключові елементи рекурсії:
- Базовий випадок: умова, яка зупиняє рекурсію;
- Рекурсивний випадок: частина, де функція викликає саму себе з простішим вхідним значенням.
Чому використовують рекурсію?
Деякі задачі природно виражаються у вигляді менших підзадач. Рекурсія забезпечує зрозумілий і елегантний спосіб їх розв'язання, коли функція викликає саму себе для обробки простіших випадків. Зазвичай використовується для обробки дерев, пошуку шляхів або розбиття структур (наприклад, списків, рядків).
Простий приклад
123456def 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)
Розгляньте крок за кроком, як це працює:
times = 3→ умова істинна, виводиться повідомлення, викликаєтьсяprint_message(message, 2);times = 2→ умова істинна, виводиться повідомлення, викликаєтьсяprint_message(message, 1);times = 1→ умова істинна, виводиться повідомлення, викликаєтьсяprint_message(message, 0);times = 0→ умова хибна, рекурсія зупиняється.
Результат: повідомлення виводиться три рази.
Стек викликів
Кожного разу, коли функція викликає саму себе, до стека викликів додається новий фрейм — це структура пам'яті, яка відстежує активні виклики функцій. Коли досягається базовий випадок, кожен попередній виклик завершується один за одним у зворотному порядку.
Кожна рекурсивна функція повинна мати базовий випадок. Без нього функція буде викликати саму себе нескінченно і спричинить RecursionError.
Проведіть, щоб почати кодувати
Реалізація рекурсивної функції list_sum, яка обчислює суму всіх елементів у списку.
- Якщо список
numbersпорожній, повернути0— це базовий випадок; - В іншому випадку повернути перший елемент доданий до результату рекурсивного виклику з рештою списку.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат