I see no recursion in the problem as stated. Can a polygon contain another polygon? I can see that if you had ... e_1 = [(0,0),(3,0)] e_2 = [(3,0),(2,3)] e_3 = [(2,3),(0,0)] triangle_1 = [e_1,e_2,e_3] w_1 = [triangle_1,] ... you might want to make a copy of triangle_1 that was offset by some amount and add it to w_1. Is that the idea?