ClearAll[splitCoords, step, recursiveSubdivide]
splitCoords = Map[Append[#2]]@
Partition[RotateRight @
Riffle[#, MovingAverage[Join[#, {First@#}], 2]], 3, 2,1] &;
step = ReplaceAll[p_Polygon :>
Module[{rc = RegionCentroid[p], mc = MeshCoordinates[p]},
Map[Polygon] @ splitCoords[mc, rc]]];
recursiveSubdivide[rp_, n_, opts : OptionsPattern[]] /; n >= 1 :=
DynamicModule[{p = RegionCentroid[rp], mc = MeshCoordinates[rp]},
Deploy @ Graphics[{EdgeForm[Gray],
Dynamic @ Map[{{Opacity[.5], FaceForm[RandomColor[]], #} & /@
Nest[Flatten @* step, Polygon @ #, n]} &] @ splitCoords[mc, p],
Locator[Dynamic@p]}, opts]]
Examples:
SeedRandom[777];
rp = RandomPolygon[{"Convex", 4}];
recursiveSubdivide[rp, 1, ImageSize -> Medium]
recursiveSubdivide[rp, 3, ImageSize -> Medium]