For variety: VBA (I very rarely use it...). Simple recursive solution.
Sub Sierpinski_Triangle()
Dim pt1 As Variant
Dim pt2 As Variant
Dim pt3 As Variant
Dim num As Integer
pt1 = ThisDrawing.Utility.GetPoint(, "Point 1: ")
pt2 = ThisDrawing.Utility.GetPoint(pt1, "Point 2: ")
pt3 = ThisDrawing.Utility.GetPoint(pt1, "Point 3: ")
num = ThisDrawing.Utility.GetInteger("Number of iterations: ")
DrawSierpinski pt1, pt2, pt3, num
End Sub
Function DrawSierpinski(pt1 As Variant, pt2 As Variant, pt3 As Variant, num As Integer)
If num = 0 Then
DrawTriangle pt1, pt2, pt3
Else
DrawSierpinski pt1, MidPoint(pt1, pt2), MidPoint(pt1, pt3), num - 1
DrawSierpinski pt2, MidPoint(pt1, pt2), MidPoint(pt2, pt3), num - 1
DrawSierpinski pt3, MidPoint(pt1, pt3), MidPoint(pt2, pt3), num - 1
End If
End Function
Function DrawTriangle(pt1 As Variant, pt2 As Variant, pt3 As Variant) As AcadSolid
Set DrawTriangle = ThisDrawing.ModelSpace.AddSolid(pt1, pt2, pt3, pt3)
End Function
Function MidPoint(pt1 As Variant, pt2 As Variant) As Variant
Dim pt(0 To 2) As Double
pt(0) = (pt1(0) + pt2(0)) / 2
pt(1) = (pt1(1) + pt2(1)) / 2
pt(2) = (pt1(2) + pt2(2)) / 2
MidPoint = pt()
End Function