As you may already know, iterative and recursive algorithms are interchangeable. As far as I can tell, your algorithm is equivalent to:

void fill(int left, int right, int top, int bottom, int oldcol, int newcol)
{
int x, y;
for (x = left; x <= right; x++)
for (y = top; y <= bottom; y++)
if (GetPixel(x, y) == oldcol)
PlotPixel(x, y, newcol);
}

That changes all pixels within the ranged rectangle. I've thought of floodfills filling areas bounded by a different colour. Which effect do you want?