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

single

bookРекурсія

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

Note
Визначення

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

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

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

Навіщо використовувати рекурсію?

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

1234567
def 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)
copy

Рухайтеся крок за кроком, щоб зрозуміти, як працює ця рекурсивна програма:

  1. Перевірка умови: якщо times > 0, функція продовжує виконання. У цьому випадку times = 3, тому умова істинна;
  2. Виведення повідомлення: функція виводить "Hello, Recursion!";
  3. Рекурсивний виклик: функція викликає саму себе з times - 1;
  4. Повторення: цей процес триває, поки times не стане 0;
  5. Завершення: коли умова times > 0 більше не виконується, рекурсія зупиняється, і програма завершується.

Результат: Повідомлення "Hello, Recursion!" буде виведено три рази.

Розуміння процесу виконання:

Кожного разу, коли функція викликає саму себе, у стек викликів (структура пам'яті, яка відстежує активні виклики функцій) додається новий фрейм. Функція продовжує викликати себе зі зменшеним значенням times. Коли досягається базовий випадок (times == 0), виконання зупиняється. Потім кожен попередній виклик завершується один за одним у зворотному порядку. Така поведінка зворотного проходження є ключовою для роботи рекурсії.

Завдання

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

Дано рядок, що представляє номер телефону, який може містити пробіли, дефіси, дужки або інші нецифрові символи. Мета — виділити лише цифри за допомогою рекурсії.

  1. Якщо вхідний рядок number порожній, повернути порожній рядок.
  2. Перевірити, чи є перший символ рядка number цифрою за допомогою методу isdigit() в умові if.
  3. Якщо це цифра, об'єднати її з результатом рекурсивного виклику format_phone_number, передаючи підрядок, починаючи з другого символу.
  4. Якщо це не цифра, виконати рекурсивний виклик format_phone_number, пропускаючи перший символ.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt