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), виконання зупиняється. Далі кожен попередній виклик завершується по черзі у зворотному порядку. Така поведінка зворотного проходження є ключовою для роботи рекурсії.
Swipe to start coding
Дано рядок, що представляє номер телефону, який може містити пробіли, дефіси, дужки або інші нечислові символи. Мета — виділити лише цифри за допомогою рекурсії.
- Якщо вхідний рядок
numberпорожній, повернути порожній рядок. - Перевірити, чи перший символ рядка
numberє цифрою за допомогою методуisdigit()в умовіif. - Якщо це цифра, конкатенувати її з результатом рекурсивного виклику
format_phone_number, передаючи підрядок, починаючи з другого символу. - Якщо це не цифра, виконати рекурсивний виклик
format_phone_number, пропускаючи перший символ.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат