Пименова Ольга Рушановна
Учитель информатики
ГБОУ МО «Одинцовский «Десятый лицей»
Свидетельство о публикации в электронном СМИ: СВ №174617
Международный конкурс Международный педагогический конкурс в номинации «Педагогика XXI века: инновационные методы обучения»
Наименование конкурсной работы: Разработка рекурсивных алгоритмов с использованием алгоритмических языков программирования.
Итоговая оценка: 1 место,  85 баллов(-а)
Диплом Международного конкурса, бланк: ЕМ №174617


Разработка урока 

Разработка рекурсивных алгоритмов с использованием алгоритмических языков программирования.

Класс 11.

Автор. Пименова Ольга Рушановна. Учитель информатики. ГБОУ МО «Одинцовский «Десятый лицей».

Цель урока.

  1. Формирование знаний о рекурсии:
    – Объяснить принцип работы рекурсивных функций.
    – Показать отличие рекурсии от итерации.
     2. Развитие практических навыков:
       – Научить студентов разрабатывать простые рекурсивные алгоритмы для решения задач.
       – Формировать умение анализировать задачу и выбирать подходящий метод её решения (рекурсию или итерацию).
    3. Закрепление теоретических основ:
       – Повторение базовых понятий алгоритмизации и программирования.
       – Рассмотрение примеров использования рекурсии в реальных задачах.
    4. Повышение уровня самостоятельности:
       – Стимулировать студентов к самостоятельной работе над задачами.
       – Развивать навыки поиска информации и применения новых методов решения задач.

Задачи урока.

  1. Теоретическая часть:
    – Дать определение рекурсии и объяснить механизм её работы.
    – Проанализировать примеры простых рекурсивных функций (например, факториал, вычисление чисел Фибоначчи).
       – Обсудить преимущества и недостатки рекурсии по сравнению с итерацией.
    2. Практическое применение:
       – Решение нескольких задач с использованием рекурсии.
       – Анализ кода, написанного обучающимися, обсуждение возможных ошибок и способов их исправления.
       – Выполнение практической работы по разработке рекурсивного алгоритма для конкретных задач.
    3. Контроль знаний:
       – Проведение мини-тестирования для проверки понимания материала.
       – Индивидуальные консультации по возникшим вопросам.
    4. Подведение итогов:
       – Обсуждение результатов выполнения заданий.
       – Подготовка рекомендаций для дальнейшего изучения темы

   – Домашнее задание.


Оборудование и материалы:

– Компьютеры с установленным языком программирования (Python, C++, Java).
– Презентация с теорией и примерами.
– Листки с заданиями для лабораторной работы.
– Тестовые задания для проверки знаний.

Время Тема урока Дидактические материалы
План урока: Разработка рекурсивных алгоритмов с использованием алгоритмических языков программирования. Учебник

Презентации 

Карточки с заданием

Тест с вопросами

1. 1 минута Организационный момент.
Приветствие, проверка присутствующих, настрой на работу.
2. 3 минуты Актуализация знаний
   Вопросы для повторения:
   – Что такое функция в питоне?
   – Какие типы циклов вы знаете? (for, while)
   – В чем заключается разница между итерационным и рекурсивным подходами?

Функция в Python – это вспомогательный алгоритм, который выполняет определенную задачу. Функции позволяют разбивать сложные программы на более части.

Функции определяются с помощью ключевого слова def, за которым следуют имя функции и список параметров в круглых скобках. Функция предполагает возвращение значения.

В Python существуют основные типы циклов: for, while Цикл for используется для перебора элементов последовательности, такой как список или строка. Цикл while продолжает выполнение блока кода до тех пор, пока условие остается истинным.

Итерационный подход: Использует циклы (for, while) для пошагового выполнения действий.
Рекурсивный подход: Функция вызывает сама себя, постепенно приближаясь к решению задачи.

3. 10 минут Основная часть
   Теория:
– Определение итерации и рекурсии.
– Примеры рекурсивных функций (вычисление факториала, числа Фибоначчи).

– Преимущества и недостатки рекурсии.

– Разбор решения задач типа ЕГЭ 23

Итерация — это процесс многократного выполнения одного и того же набора инструкций, обычно с изменением некоторых переменных на каждой итерации.

Рекурсия — это метод, при котором функция вызывает саму себя, постепенно уменьшая сложность задачи до тех пор, пока не будет достигнуто базовое условие, после которого начинается возврат значений вверх по цепочке вызовов.

Пример рекурсивных функций.

Реализация на Python
– Вычисление факториала числа n с использованием рекурсии:

def factorial(n):

    if n == 0 or n == 1:

        return 1

    else:

        return n * factorial(n-1)

– Рекурсивная формула для вычисления n-го числа Фибоначчи
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

Преимущества рекурсии:
– Более естественная реализация для некоторых математических задач (например, дерево решений, переборные задачи).
– Код часто выглядит проще и лаконичнее благодаря отсутствию явных циклов.
– Возможность элегантного решения сложных задач без большого количества вложенности.
Недостатки рекурсии:
– Может требовать больше памяти из-за создания стека вызовов.
– Возможен риск переполнения стека при глубокой рекурсии.
– Иногда менее эффективен по времени выполнения по сравнению с итерационными аналогами.

Разбор задача типа ЕГЭ 23. Используя презентацию (отдельный файл).

4. 15 минут Практика:
   – Написание простого рекурсивного алгоритма (например, вычисление суммы первых n натуральных чисел).
   – Анализ кода, обсуждение возможных ошибок и оптимизаций.

1. Алгоритм вычисления суммы первых n натуральных чисел.

Образец выполнения.

def sum_of_first_n(n):
    if n == 0:
        return 0
    else:
        return n + sum_of_first_n(n – 1)

2. Решение задач типа ЕГЭ 23 (Сайт К. Полякова).

№№4,22,32,34,35,43,44,50,56,81,87,93,109,113.

8 минут Проверка знаний
   Мини-тестирование:
   – Несколько вопросов на понимание теории рекурсии.
   – Задача на разработку простой рекурсивной функции.

Пожалуйста, ответьте на эти вопросы, чтобы я смогла проверить ваши знания.

Вопросы теста, задача на анализ  и варианты ответов в Приложении.

2 минута 6. Итоги урока

Обсуждение результатов, ответы на вопросы, рекомендации для самостоятельного изучения.

1 минута 7. Домашнее задание (5 минут)
   – Прочитать материал по теме рекурсии.
   – Решить несколько задач на рекурсию.

Решить задачи, которые не успели в классе.

Приложение.

 

Мини-тест на понимание теории рекурсии.

1. Что такое рекурсия?
   – а) Повторение одного и того же кода в программе.
   – б) Функция, вызывающая сама себя.
   – в) Цикл, который повторяется определенное количество раз.
   – г) Алгоритм сортировки данных.

2. Какие компоненты необходимы для создания корректной рекурсивной функции?
   – а) Только базовый случай.
   – б) Только рекурсивный вызов.
   – в) Базовый случай и рекурсивный вызов.
   – г) Никаких специальных компонентов не требуется.

3. Приведите пример задачи, которую удобно решать с помощью рекурсии:
   – а) Сортировка массива методом пузырька.
   – б) Вычисление факториала числа.
   – в) Поиск максимального элемента в массиве.
   – г) Подсчет количества цифр в числе.

4. Данный  пример демонстрирует правильный рекурсивный подход к решению задачи?
   

   def factorial(n):

       if n == 0 or n == 1:

           return 1

       else:

           return n * factorial(n – 1)

   

   – а) Верен.
   – б) Неверен, потому что отсутствует базовый случай.
   – в) Неверен, потому что рекурсивный вызов неверен.
   – г) Неверен, потому что используется цикл вместо рекурсии.

5. Может ли рекурсивная функция вызывать другую функцию внутри себя?
   – а) Да, если эта другая функция также рекурсивная.
   – б) Нет, это запрещено правилами программирования.
   – в) Да, это возможно и часто применяется.
   – г) Да, но только если эта функция не вызывает исходную рекурсивную функцию.

6. Можно ли решить любую задачу с использованием рекурсии?
   – а) Да, любая задача решается рекурсией.
   – б) Нет, некоторые задачи лучше решаются с помощью итерации.
   – в) Да, но это неэффективно.
   – г) Нет, рекурсия подходит только для простых задач.

7. Каким образом рекурсия связана с математическими последовательностями?
    – а) Никак не связана.
    – б) Рекурсия позволяет легко вычислять элементы последовательности.
    – в) Рекурсия нужна только для вычисления сложных последовательностей.
    – г) Рекурсия полезна только для конечных последовательностей.

Разработка рекурсивных алгоритмов с использованием алгоритмических языков программирования.