Here's a script that draws a Sierpinski triangle that fits the open document. The number of recursions can be changed by changing the number of "levels" in line 2, although it is advised not to go too much above 10, otherwise Illustrator may become unresponsive. Adapted from: https://www.youtube.com/watch?v=e3Ll0_oxChU

function main() {
var level = 5;
var doc = app.activeDocument;
function drawTriangle(p1, p2, p3) {
var path1 = doc.pathItems.add();
path1.setEntirePath([p1, p2, p3, p1]);
path1.closed = true;
}
function getMidpoint(p1, p2) {
return [(p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2];
}
var Triangle = function(p1, p2, p3) {
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
this.draw = function() {
drawTriangle(this.p1, this.p2, this.p3);
}
}
function drawSierpinskiTriangle(tri, depth) {
if (depth == level) return;
var m1 = getMidpoint(tri.p1, tri.p2);
var m2 = getMidpoint(tri.p2, tri.p3);
var m3 = getMidpoint(tri.p3, tri.p1);
var t0 = new Triangle(m1, m2, m3);
t0.draw();
var t1 = new Triangle(tri.p1, m1, m3);
var t2 = new Triangle(tri.p2, m1, m2);
var t3 = new Triangle(tri.p3, m2, m3);
drawSierpinskiTriangle(t1, depth + 1);
drawSierpinskiTriangle(t2, depth + 1);
drawSierpinskiTriangle(t3, depth + 1);
}
var size = doc.width < doc.height ? doc.width : doc.height;
var t = new Triangle(
[size / 2, 0],
[0, -size],
[size, -size]
);
t.draw();
drawSierpinskiTriangle(t, 0);
}
main();