Ti scrivo il codice in python che forse di da l'idea di come funziona.
Codice:
from sys import stdout
def step(n,table,xbase,ybase):
if n == 1:
table[(xbase,ybase)] = True
else:
# alto sinistra
step(n/2,table,xbase,ybase)
# basso sinistra
step(n/2,table,xbase,ybase+n/2)
# basso destra
step(n/2,table,xbase+n/2,ybase+n/2)
def sierpinsky(n):
table = {}
step(n,table,0,0)
for y in range(n):
for x in range(n):
if (x,y) in table:
stdout.write('x')
else:
stdout.write(' ')
stdout.write('\n')