Задача может показаться простой - просто рисуешь треугольнички. Но нет. Это треугольник Серпинского, и по сути, нарисовав вот такую фигурку, ваш код должен нарисовать и вот такую.
А как это выполняется? Рекурсией.
Это новое и важное понятие в программировании. Что такое рекурсия? Это когда функция вызывает саму себя.
По очереди.
1. Делаем функцию, которая рисует треугольник.
2. И эта же функция рисуен внутри треугольника 3 маленьких треугольника.
3. А так как эти 3 маленьких треугольника рисуются той же самой функцией, то и внутри маленьких треугольников нарисуется еще по 3 маленьких треугольника.
То же самое графически.
Вообще, я бы для начала стала рисовать не треугольник, а квадрат. Потому что треугольник сложнее в том плане, что там нужно высчитывать высоту треугольника, а для этого нужны знания геометрии, которые нынешние пятиклассники не получают.
Вот так выглядит функция, рисующая равносторонний треугольник.
Мы задаем координаты х и у - точку, из которой треугольник будет нарисован.
а - сторона треугольника.
Далее считаем высоту труегольника, используя знания геометрии.
цел высота
высота:= int(sqrt(a*a-(a/2)*(a/2)))
Переходим в исходную точку
сместиться в точку (x,y)
А это 3 вектора треугольника.
сместиться на вектор (a,0)
сместиться на вектор (-a/2,высота)
сместиться на вектор (-a/2,-высота)
Как теперь нарисовать внутри этого большого еще 3 маленьких треугольника?
Легко! Там все то же самое, только х и у будут у 2х треугольников другие и сторона в 2 раза меньше.
треугольник(x,y,div(a,2))
треугольник(x+div(a,2),y+0,div(a,2))
треугольник(x+div(a,4),y+div(высота,2),div(a,2))
Только теперь возникает небольшая проблема - функция будет бесконечно вызывать саму себя и никогда не прекратит работу. Поэтому нам необходимо ограничить работу функции детализацией.
Для этого вводим новую переменную step, которую будем увеличивать каждый раз, как вызываем маленький треугольник.
Т.е. step=1 - это просто большой треугольник
step= 2 - большой треугольник и 3 маленьких внутри
step=3 - у каждого из трех маленьких внутри еще своих 3 маленьких
И получается step=3 как раз соответствует решению нашей задачи.
Если step меньше 3х, то рисуем 3 маленьких треугольника, а если больше или равно, то даже не суемся в ту часть кода и спокойно заканчиваем работу.
Кумир в школе