Урок 48. Рекурсія без магії
Урок 48. Рекурсія без магії
Section titled “Урок 48. Рекурсія без магії”Тривалість: 45–60 хв
Рівень: Algorithm Explorer
🎯 Місія
Section titled “🎯 Місія”Зрозумій рекурсію, base case і виклик функції самої себе.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”def countdown(n): if n == 0: print("GO!") return print(n) countdown(n - 1)💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Рекурсія — це як лялька-матрьошка: відкриваєш одну — а всередині ще одна така ж, тільки менша. Функція викликає саму себе, поки не дістанеться до найменшої (base case).
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”def countdown(n)— функція приймає числоif n == 0— base case: зупиняємося!return— виходимо з функції, інакше буде нескінченний циклcountdown(n - 1)— викликаємо себе з меншим числом
Приклад: countdown(3)
Section titled “Приклад: countdown(3)”countdown(3)# друкує 3, викликає countdown(2)# друкує 2, викликає countdown(1)# друкує 1, викликає countdown(0)# n==0 → друкує "GO!" → returngraph TD
A["countdown(3)"] --> B["print 3"]
B --> C["countdown(2)"]
C --> D["print 2"]
D --> E["countdown(1)"]
E --> F["print 1"]
F --> G["countdown(0)"]
G --> H["print GO!"]
H --> I["return"]
style H fill:#4caf50,color:#fff
style I fill:#4caf50,color:#fff
✏️ Основні завдання
Section titled “✏️ Основні завдання”- Countdown.
- Сума 1..n.
- Надрукуй 1..n.
- Навмисно зламай base case і досліди помилку.
🙋 Підказка до завдання 2: sum_up_to(n) = n + sum_up_to(n-1), і base case: якщо n == 0 поверни 0.
⭐ Challenge
Section titled “⭐ Challenge”Зроби простий рекурсивний пошук скарбу у вкладеній структурі.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»