single
Рекурсія
Свайпніть щоб показати меню
Рекурсія — це техніка програмування, коли функція викликає саму себе, щоб розв'язати задачу на менших частинах. Особливо корисна для задач із повторюваною структурою або природними підзадачами.
Ключові елементи рекурсії:
- Базовий випадок: умова, яка зупиняє рекурсію;
- Рекурсивний випадок: частина, де функція викликає саму себе з простішим вхідним значенням.
Навіщо використовувати рекурсію?
Деякі задачі природно виражаються у вигляді менших підзадач. Рекурсія забезпечує зрозумілий і елегантний спосіб їх розв'язання, коли функція викликає саму себе для обробки простіших випадків. Зазвичай використовується для обробки дерев, пошуку шляхів або розбиття структур (наприклад, списків, рядків).
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Рухайтеся крок за кроком, щоб зрозуміти, як працює ця рекурсивна програма:
- Перевірка умови: якщо
times > 0, функція продовжує виконання. У цьому випадкуtimes = 3, тому умова істинна; - Виведення повідомлення: функція виводить
"Hello, Recursion!"; - Рекурсивний виклик: функція викликає саму себе з
times - 1; - Повторення: цей процес триває, поки
timesне стане 0; - Завершення: коли умова
times > 0більше не виконується, рекурсія зупиняється, і програма завершується.
Результат: Повідомлення "Hello, Recursion!" буде виведено три рази.
Розуміння процесу виконання:
Кожного разу, коли функція викликає саму себе, у стек викликів (структура пам'яті, яка відстежує активні виклики функцій) додається новий фрейм. Функція продовжує викликати себе зі зменшеним значенням times. Коли досягається базовий випадок (times == 0), виконання зупиняється. Потім кожен попередній виклик завершується один за одним у зворотному порядку. Така поведінка зворотного проходження є ключовою для роботи рекурсії.
Проведіть, щоб почати кодувати
Дано рядок, що представляє номер телефону, який може містити пробіли, дефіси, дужки або інші нецифрові символи. Мета — виділити лише цифри за допомогою рекурсії.
- Якщо вхідний рядок
numberпорожній, повернути порожній рядок. - Перевірити, чи є перший символ рядка
numberцифрою за допомогою методуisdigit()в умовіif. - Якщо це цифра, об'єднати її з результатом рекурсивного виклику
format_phone_number, передаючи підрядок, починаючи з другого символу. - Якщо це не цифра, виконати рекурсивний виклик
format_phone_number, пропускаючи перший символ.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат