Найти тему
Плохой Программист

Треугольник Серпинского в Кумире

Задача может показаться простой - просто рисуешь треугольнички. Но нет. Это треугольник Серпинского, и по сути, нарисовав вот такую фигурку, ваш код должен нарисовать и вот такую.

-2

А как это выполняется? Рекурсией.

Это новое и важное понятие в программировании. Что такое рекурсия? Это когда функция вызывает саму себя.

По очереди.

1. Делаем функцию, которая рисует треугольник.

2. И эта же функция рисуен внутри треугольника 3 маленьких треугольника.

3. А так как эти 3 маленьких треугольника рисуются той же самой функцией, то и внутри маленьких треугольников нарисуется еще по 3 маленьких треугольника.

То же самое графически.

-3

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

Вот так выглядит функция, рисующая равносторонний треугольник.

-4

Мы задаем координаты х и у - точку, из которой треугольник будет нарисован.

а - сторона треугольника.

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

цел высота
высота:= 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 как раз соответствует решению нашей задачи.

-5

Если step меньше 3х, то рисуем 3 маленьких треугольника, а если больше или равно, то даже не суемся в ту часть кода и спокойно заканчиваем работу.

Кумир в школе

Наука
7 млн интересуются