Карандашное программирование: рекурсия Блог тренера / 26.01.2017 Продолжение. Начало публикаций про карандашное программирование см. здесь.Среду http://pencilcode.net/ можно использовать для обучения детей младшего школьного возраста одной из основных концепций программирования - рекурсии. С рекурсией тесно связана математическая индукция, которая изучается в старших классах, а также геометрические фракталы (Треугольник Серпинского, Снежинка Коха, Дерево Пифагора и т.д.).См. посты на Галактике:STEAM-проект: снежинка Коха, треугольник Серпинского и другие фрактальные объекты в GeoGebraСуха теория, мой друг, а древо жизни вечно зеленеет...)Примеры объектов, созданных при помощи рекурсии в http://pencilcode.net/Рекурсия. Спираль.Перед заходом на это упражнение, повторить, как с помощью цикла строится квадрат. В теле цикла, повторяющегося 4 раза, есть две команды: движение вперед и поворот вправо:Обсудить: как из квадрата сделать квадратную сходящуюся (скручивающуюся) спираль?Обратимся к еще одному определению рекурсии:Каждый раз длина каждого витка спирали уменьшается на определенную величину, зависящую от длины предыдущего витка. Это и значит, что длина витка задается рекурсивно. Зададим процедуру SPIRAL для этого используем блок для определения новой функции, которую назовемSPIRAL. Она зависит от переменной x, первоначальное значение которой положим равным 20. Бесконечно cходящейся (скручивающейся) у нас спираль быть не может: движение вперед (длина витка) не может быть меньше одного черепашьего шага. Т.е. величина отрезка, на который на каждом проходе продвигается черепашка, должна оставаться положительной. Это и будет наше условие для процедуры. Пока оно выполнено, процедура выполняется. Как только x становится равным нулю, процедура останавливается.Тогда при прохождении первого витка спирали черепашка продвинется на 10*x = 200 черепашьих шагов, что соответствует 8-ми клеткам (напомним, что сторона клетки равна 25 черепашьим шагам).При прохождении второго витка SPIRAL : x-1 Вызывает процедуру SPIRAL и передает ей значение параметра 20-1=19. Черепашка пройдет 10 * (x-1) =190 шагов. При прохождении третьего витка она пройдет 10 * ((x-1)-1) =180 черепашьих шагов. И т.д. до тех пор, пока длина прохода остается положительной, т.е. выполняется условие x>0.Рекурсия. Скручивающаяся спираль.Попробуем переместить блок с вызовом процедуры, подняв его выше блоков перемещения и поворота, запустив программу, посмотрим на результат.Обнаружим, что спираль раскручивается.Рекурсия. Раскручивающаяся спиральПодробнее прочитать, почему так происходит и чем отличается хвостовая рекурсия от вложенной можно здесь:Рекурсия в алгоритмах Материалы Ольги Тузовой.Рекурсия. ДеревоБольшое дерево можно нарисовать, скомбинировав несколько маленьких деревьев, а маленькие деревья могут быть сделаны из крошечных деревьев. Создавая функцию дерево с аргументом размер, мы можем сделать дерево из более мелких деревьев.ДеревоРекурсия. Треугольник СерпинскогоТреугольник Серпинского. Автор Ольга ТузоваФрактал на правильном шестиугольнике. Автор Ольга ТузоваФрактал на правильном шестиугольнике. Версия Ирины АфонинойФрактал на правильном семиугольнике.Рекурсия. СнежинкаСнежинкаРекурсия. Закрашенные квадратыВ этих проектах для создания закрашенных квадратов используется команда box.Количество слоев на представленных рисунках: 2, 3, 5Квадраты 1Версия рекурсии с квадратамиА какие еще объекты для рисования с использованием рекурсии мы можем создать?Полезные ссылкиРекурсия в алгоритмах Материалы Ольги Тузовой.Треугольник Серпинского. Материалы Ольги ТузовойПосты по теме карандашного программирования Карандашное программирование. НачалоКарандашное программирование: смайломанияКарандашное программирование: чужой код для решения своей задачи...Карандашное программирование: циклыГеометрия и карандашное программированиеКарандашное программирование: холст как координатная плоскостьКарандашное программирование: рисуем пейзажи масштабированиемКарандашное программирование: четыре черепашкиКарандашное программирование: несколько черепашек и поворотная симметрияКарандашное программирование: черепашка рисует паркеты и мозаикиКарандашное программирование: черепашка и оптические иллюзииО творческих домашних заданиях, или Могут ли все ученики быть успешными?Программирование для воссоздания картин: математика и искусство вместеВ начале была цифра?Пляшущие черепашкиИскусство создания снежинки, или Как скоротать зиму...Карандашное программирование: паркеты и жывёлыКарандашное программирование: рекурсияЁлка в коде. МКЁлка в коде. Этап 2. Шарики цветные Брошюра "Карандашное программирование". Л.Рождественская. Верстка Л.Кравченко STEAM pencilcode блочное программирование искусство математика программирование рекурсия цикл