MapShape[f_,s_]:=Map[f,s]
(*s est une liste de points*)MapShapeList[f_,l_]:=Map[MapShape[f,#]&,l]
(*l est une liste de listes de points*)
IfsShapeList[ifs_,l_]:=Flatten[Map[MapShapeList[#,l]&,ifs],1]
(*ifsestunelisted000applications*)
IterateIfs[ifs_,shape_,n_]:=Nest[IfsShapeList[ifs,#]&,{shape},n]
PlotIfs[ifs_,shape_,n_]:=Module[
{l,glist},
l=IterateIfs[ifs,shape,n];
glist=Map[Line,l];
Show[
Graphics[
{Thickness[.001]} ~  Join~ glist
],AspectRatio->Automatic
]
]

Sierpinski

triangle={{0,0},{1,0},{1/2,Sqrt[3]/2},{0,0}};
triangle2={{0,0},{1,0},{1/2,-Sqrt[3]/2},{0,0}};
sf1[x_]:={1/2x[[1]],1/2x[[2]]}//N
sf2[x_]:={1/2x[[1]]+1/2,1/2x[[2]]}//N
sf3[x_]:={1/2x[[1]]+1/4,1/2  x[[2]]+Sqrt[3]/4}//N;
sierpinski={sf1,sf2,sf3};

Manipulate[PlotIfs[sierpinski,triangle2,x],{x,1,10,1}]

PlotIfs[sierpinski,triangle2,6]