Методика уроков и самостоятельных занятий по рекурсивным алгоритмам (подборка задач) на примере языка Python
Методики обучения программированию в школе. Использование технологии "перевернутый класс" на примере урока информатики "Рекурсивные функции и их реализация на Python". Использование во время урока метода открытых программ. Разработка урока "Рекурсивные фу
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.05.2024 |
Размер файла | 263,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Фирсова П. «Перевернутый класс»: технология обучения XXI века. https://www.ispring.ru/elearning-insights/perevernutyi- klass-tekhnologiya-obucheniya-21-veka
Приложение 1
Открытые программы для самостоятельной работы обучаемых с использованием рекурсивных алгоритмов приведены в приложении №1 к настоящей работе.
Сумма от 1 до n
Теперь посмотрим, как с помощью рекурсии суммировать все числа от 1 до данного числа. Эта программа принимает на вход положительное целое число и возвращает единственную распечатку суммы всех чисел от 1 до целого.
def SumT(tN) :
# Основной случай
if tN == 1 :
return tN
# Рекурсивный случай
else :
return tN + SumT(tN -- 1)
# Параметр для запуска
tN = 5
print(SumT(tN))
Наша программа начинается с заданного числа и на каждом рекурсивном шаге добавляет цифру на единицу ниже, пока не достигнет 1.
Базовый вариант находится в строке 3 if tN ==1,. В рекурсивном случае текущее значение tN вызовов SumT()складывается со значением на 1 меньше.
Рекурсия Python со строками и массивами
Рекурсия также полезна со строками или массивами. Во многих рекурсивных вопросах собеседования вам будет предложено преобразовать строки или массивы, пока все они не будут соответствовать определённым критериям.
Удалить пробелы из строки
В этом упражнении мы создадим программу, которая принимает заданную строку и возвращает новую строку без пробелов или /t символов табуляции ( ). Например, Hello World стал бы HelloWorld.
def RemT(string):
# Основной случай
if not string:
return «»
# Рекурсивный случай
if string[0] == «\t» or string[0] == » «:
return RemT(string[1:])
else:
return string[0] + RemT(string[1:])
# Параметр для запуска
print(RemT(«Hello\tWorld»))
Удаление вкладок из пустой строки «просто вернёт пустую строку». Следовательно, наш базовый случай будет, когда наша исходная строка пуста (строка 3).
Для рекурсивного случая в строках 7-10 мы проверяем, является ли текущий элемент «\t»или » «:
Если текущий элемент -- «\t»или » «мы отбрасываем его и вызываем другой экземпляр функции после удаления этого элемента.
Если текущий элемент не является «\t»или » «, мы добавляем его к выходной строке и вызываем другой экземпляр функции после удаления этого элемента.
Инвертировать массив
Теперь мы создадим рекурсивную программу, которая принимает данный массив и возвращает тот же массив с элементами в обратном порядке. Например, 1, 2, 3, 4стал бы 4, 3, 2, 1.
def Rev(array):
# Основной случай
if len(array) == 0: # Если мы столкнемся с пустым массивом, просто вернем пустой массив
return []
# Основной случай 2
elif len(array) == 1 : # Инвертирование массива размера 1 возвращает тот же массив
return array
# Рекурсивный случай
return [array[len(array) -- 1]] + Rev(array[:len(array) -- 1])
# Первая часть - это сохранение последнего элемента, который будет добавлен позже
# Вторая часть - это вызов другого экземпляра той же функции с удаленным последним элементом
# Параметр для запуска
array = [1, 2, 3, 4]
print(Rev(array))
Для этого решения мы создадим временную переменную, которая сохраняет последний элемент переданного массива на каждом рекурсивном шаге. В конце концов, эти значения будут использоваться для повторного заполнения массива в обратном порядке, потому что вложенные рекурсивные функции выполняются в первую очередь.
Базовые случаи этой проблемы -- это когда в массиве содержится 0 или 1 элемент, потому что инвертирование этих массивов вернёт тот же массив.
Распечатать все листовые узлы двоичного дерева слева направо
Этот вопрос немного сложен, но именно такой вопрос вы встретите на собеседовании по программированию на Python.
Мы создадим программу, которая печатает все листовые узлы в том виде, в каком они появляются слева направо на древовидной диаграмме. Это дерево, которое мы будем использовать.
Правильное решение для этого дерева 4 6 7 9 10.
Напоминание: конечные узлы -- это узлы, у которых нет дочерних узлов, и поэтому они заканчивают ветвь поддерева.
main.py
# Функция для печати листа
# Функция для печати конечных узлов слева направо
def printLeafNodes(root: Node) -> None:
# Если узел равен нулю, вернуть
if (not root):
return
# Если node равен null, возвращаемый узел является конечным узлом,
# print its data
if (not root.left and
not root.right):
print(root.data, end = » «)
return
# Если существует левый дочерний элемент,
# рекурсивно проверьте наличие листа
if root.left:
printLeafNodes(root.left)
# Если существует правый дочерний элемент,
# рекурсивно проверьте наличие листа
if root.right:
printLeafNodes(root.right)
# Параметр для запуска
if __name__ == «__main__»:
# Создает двоичное дерево, показанное на диаграмме
# выше
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.right.left = Node(5)
root.right.right = Node(8)
root.right.left.left = Node(6)
root.right.left.right = Node(7)
root.right.right.left = Node(9)
root.right.right.right = Node(10)
# print leaf nodes of the given tree
printLeafNodes(root)
node.py
# Узел двоичного дерева
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
Эта программа берёт корневой узел и печатает все листовые узлы слева направо. Наш базовый случай: либо 1) нет оставшихся узлов, либо 2) нет оставшихся листовых узлов.
Программа отслеживает соединения каждого дочернего элемента каждый раз, уходя влево, пока не найдёт листовой узел. Программа печатает это значение, а затем повторяет эту подзадачу для другого пути узлов.
В конце концов, функция вернётся, и все листовые узлы будут напечатаны слева направо. рекурсивная функция урок
Размещено на Allbest.ru
...Подобные документы
Исторические аспекты развития линии "Алгоритмизация и программирование" в старшей школе. Изучение языка программирования Python с применением дистанционных курсов Coursera. Методическая система обучения программированию с использованием Coursera.
дипломная работа [808,8 K], добавлен 13.12.2017Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.
курсовая работа [43,0 K], добавлен 08.06.2014Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища програмування на Python. Механізм функціонування інтерпретатора. Колекції даних, комбіновані оператори.
презентация [753,2 K], добавлен 06.02.2014Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.
курсовая работа [227,6 K], добавлен 14.05.2017Ознакомление с педпосылками интеграции изучения средств информатики. Развитие логического и алгоритмического мышления при изучении информатики. Описание компьютерной технологии обучения. Использование здоровьесберегающих технологий для детского здоровья.
контрольная работа [29,1 K], добавлен 26.02.2015Use case-диаграмма. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN И COCOMO-II. Проектирование информационной системы. Разработка приложения с использованием Django: создание шаблонов, моделей и пр.
дипломная работа [1,3 M], добавлен 10.07.2017Определение понятия графа как набора вершин и связей между ними. Способы решения задач по программированию согласно теории графов на примерах заданий "Дороги", "Перекрестки", "Скрудж Мак-Дак", используя рекурсивные функции и рекуррентные соотношения.
курсовая работа [36,2 K], добавлен 10.03.2010"Moodle" - модульная объектно-ориентированная динамическая среда обучения, ее использование для разработки систем дистанционного обучения. Общее представление о дистанционном практикуме по программированию. Разработка структуры данных и алгоритмов.
дипломная работа [1,2 M], добавлен 09.11.2016Использование рекурсии в предметных областях. Рекурсивные процедуры и функции в программировании. Создание алгоритмов для рисования графических изображений с использованием рекурсии в среде программирования Pascal ABC. Примеры рекурсии в графике.
творческая работа [6,7 M], добавлен 01.02.2014Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.
курсовая работа [228,1 K], добавлен 11.01.2012Классификация и стек рекурсивных функций. Методика распознавания формулы, записанной в строке. Реализация салфетки Серпинского и задачи о Ханойских башнях. Алгоритм быстрой сортировки. Создание функции, сортирующей массив с использованием рекурсии.
лабораторная работа [160,8 K], добавлен 06.07.2009Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Использование пакета прикладных программ MS Office при решении экономических задач. Разработка баз данных при помощи Microsoft Access. Интернет-технологии и применение языка гипертекста HTML. Построение и вычисление финансовых функций с помощью MS Excel.
курсовая работа [3,2 M], добавлен 19.03.2010Анализ создания виртуального окружения для разработки. Установка фреймворка Flask. Особенность настройки аутентификации и привилегий. Создание Python-файла и написание в нем простого веб-приложения. Запуск и проверка работоспособности приложения.
лабораторная работа [2,1 M], добавлен 28.11.2021Использование математических функций для алгоритмизации задач и отладки программ. Операторы сравнения и логические функции; реализация циклического процесса. Организация и обработка данных при помощи массивов. Функции преобразования и работы со строками.
методичка [135,5 K], добавлен 24.10.2012