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

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

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), виконання зупиняється. Потім кожен попередній виклик завершується один за одним у зворотному порядку. Така поведінка зворотного проходження є ключовою для роботи рекурсії.

Завдання

Swipe to start coding

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

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

Рішення

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

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

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

Секція 5. Розділ 1
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?

Запитати АІ

expand
ChatGPT

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

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), виконання зупиняється. Потім кожен попередній виклик завершується один за одним у зворотному порядку. Така поведінка зворотного проходження є ключовою для роботи рекурсії.

Завдання

Swipe to start coding

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

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

Рішення

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

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

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

Секція 5. Розділ 1
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?
some-alt