Рекурсия · 5 из 25
Улитка на обороте
На обороте старой фотографии дед нарисовал квадратную улитку: линия, поворот налево, линия покороче, снова налево — и так, пока линии не кончатся. Дядя Миша хочет повторить рисунок на обложке альбома и заметил: после первой линии и поворота остаётся та же улитка, только начатая с линии короче.
Что сделать
Нарисуйте черепашкой квадратную улитку рекурсией: линия, поворот налево — и та же улитка с линией короче.
Что приходит
t— черепашка: стоит в начале, перо опущеноdlina— длина первой линииshag— на сколько каждая следующая линия короче
Что вернуть
Ничего — функция рисует. Проверка сравнивает нарисованное с рисунком эталона.
Допишите функцию ulitka в редакторе справа.
Рисуйте черепашкой t, как turtle дома, — проверка
сравнивает нарисованное; возвращать ничего не нужно.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Улитка с первой линией 30 и шагом 10: вперёд 30, налево 90°, вперёд 20, налево, вперёд 10, налево — следующей линии длина 0, и рисунок кончается. Три линии, каждая короче прежней, закручены налево.
База: если dlina не больше нуля — ничего не рисовать. Иначе — вперёд на dlina, налево на 90° и улитка с длиной dlina − shag. Обойдитесь без циклов.
Линия длиной 5 при шаге 10 рисуется: она больше нуля. Улитка, закрученная направо, — зеркальная, и это другой рисунок.
Образцовый тест целиком
from cherepashka import risunok as _risunok_p
_risunok_p(ulitka, 30, 10)
<рисунок: 3 линии, 1 цвет; от (0, 0) до (30, 20); отпечаток c868eb1569>
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.