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, пропускаючи перший символ.

Рішення

Все було зрозуміло?

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain what happens if there is no base case in a recursive function?

Can you show another example of recursion with a different problem?

What are some common mistakes to avoid when using recursion?

close

Awesome!

Completion rate improved to 4.17

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
single

single

some-alt